Является ли SQL Inner Join правильным подходом? - PullRequest
0 голосов
/ 08 февраля 2019

Запись обновлена ​​для отображения фактической информации о БД / таблиц / столбцов и т. Д.

Я новичок в SQL, но учусь быстро.Я посмотрел несколько объяснений Youtube, а также некоторые ответы на этом форуме, но не могу связать их с моей ситуацией.У меня есть база данных с тремя таблицами, из которых я хочу извлечь данные.Все три таблицы имеют постоянный столбец, т.е.содержит уникальный ссылочный номер.

Под "деревом" БД у меня есть:

nice_interactions
nice_storage_center

В nice_interactions У меня есть три таблицы, для которых мне требуется информация:

dbo.tblInteraction77
dbo.tblParticpant77
dbo.tblRecording77

Необходимые мне столбцы в dbo.tblInteraction77:

[iInteractionID] - *this is the unique field amongst all tables*      
[dtInteractionGMTStartTime]
[dtInteractionGMTStopTime]
[biInteractionDuration]

Необходимые мне столбцы в dbo.tblParticpant77:

[iInteractionID]
[nvcStation]
[iSwitchID]
[tiDeviceTypeID]
[nvcCTIAgentName]

В nice_storage_center У меня есть одинтаблица, из которой мне требуются данные:

dbo.tblStorageCenter77

Столбцы из dbo.tblStorageCenter77:

[iInteractionID]
[iLoggerID]
[iLoggerResource]

Имеет ли это смысл?Мне удалось запросить две таблицы, используя WHERE, но попытка переключиться на JOIN в некотором роде не легка для меня, просматривая текст или видео и т. Д.

Заранее спасибо за любую помощь, которую вы можетеGive.

С уважением

Netrix

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

JOIN - это то, что вы ищете, поскольку вы перемещаетесь между таблицами, внутреннее объединение используется только между самой таблицей.Возможно, я смогу оказать вам дополнительную помощь, если бы вы могли показать этот вопрос под рукой.

0 голосов
/ 09 февраля 2019

Вы, похоже, ищете простое СОЕДИНЕНИЕ между всеми 4 таблицами:

SELECT
    i.iInteractionID,
    i.dtInteractionGMTStartTime,
    i.dtInteractionGMTStopTime,
    i.biInteractionDuration,
    p.nvcStation,
    p.iSwitchID,
    p.tiDeviceTypeID,
    p.nvcCTIAgentName,
    c.iLoggerID,
    c.iLoggerResource
FROM 
    dbo.tblInteraction77 i
    INNER JOIN dbo.tblParticpant77    p ON p.iInteractionID = i.iInteractionID
    INNER JOIN dbo.tblRecording77     r ON r.iInteractionID = i.iInteractionID
    INNER JOIN dbo.tblStorageCenter77 c ON c.iInteractionID = i.iInteractionID

Это вызовет все записи в tblInteraction77, которые имеют (как минимум) соответствующую запись в других таблицах на основена UniqueRef каждой таблицы.Он должен вернуть ожидаемые столбцы.

Записи, которых нет во всех 4 таблицах, не будут отображаться в результатах.Вы можете переключить INNER JOIN s на LEFT JOIN s, чтобы сделать отношение необязательным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...