为什么左连接不起作用但右连接有效?

时间:2015-03-05 10:19:10

标签: sql sql-server tsql sql-server-2012

我有3张桌子,

Transport.Devices,Transport.Conductors,Transport.ConductorDevices,

我在Devices表上应用LeftJoin,所以它也应该显示那些未分配的设备,但它不起作用,为什么?我尝试了右连接并且它工作但是左边不起作用。

Select Transport.ConductorDevices.ID, Transport.ConductorDevices.Device_ID,Transport.ConductorDevices.Conductor_ID,
        Transport.Conductors.Name as Conductor, Transport.Devices.TerminalSNO as Terminal
        from Transport.ConductorDevices
        Inner Join Transport.Devices
        ON Transport.Devices.DeviceID=Transport.ConductorDevices.Device_ID
        left Join Transport.Conductors
        ON Transport.Conductors.ConductorID= Transport.ConductorDevices.Conductor_ID

2 个答案:

答案 0 :(得分:2)

左连接!=右连接,左连接确实包括左侧的所有连接,右连接包括右侧的所有连接。在这种情况下,您需要右侧的所有内容。这就是正确的加入对你有用的原因。

sql_join_left

答案 1 :(得分:0)

如果您需要所有设备(未分配),您可以从设备启动FROM:

 from Transport.Devices
    LEFT JOIN Transport.ConductorDevices
    ON Transport.Devices.DeviceID=Transport.ConductorDevices.Device_ID
    LEFT JOIN Transport.Conductors
    ON Transport.Conductors.ConductorID= Transport.ConductorDevices.Conductor_ID