SQL内部联接是否正确?

时间:2019-02-08 20:57:16

标签: mysql sql join

帖子已更新以显示实际的数据库信息/表/列等。

我是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并不容易。

在此先感谢您提供的帮助。

致谢

Netrix

2 个答案:

答案 0 :(得分:0)

您似乎正在寻找所有4个表之间的简单JOIN:

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切换为LEFT JOIN,以使关系成为可选。

答案 1 :(得分:0)

JOIN是您要寻找的东西,因为您要在表之间移动,所以内部Join仅在单个表本身之间使用。如果您可以显示手头的问题,我也许可以为您提供更多帮助。