如果一个表没有引用,如何连接多个表?

时间:2014-06-02 20:30:33

标签: mysql database join

有几个表需要加入。

这是我不能让它发挥作用的一件事。让我们从一个名为systems的表开始。我想加入两个表,比如硬盘表和光盘表。并非所有系统都有光驱。

如果不存在光驱,我该如何执行?

SELECT *
FROM systems sys, 
diskdrives dd,
opticaldrives od 
WHERE
sys.id = dd.system_id
AND
sys.id = od.system_id

它似乎不起作用,它一直返回零结果 - 我怀疑它没有找到光驱表中的参考来匹配系统的id,所以它不会返回结果。即使光驱不存在,如何使它们连接并显示结果?如果光盘驱动器数据不可用于该系统ID,则结果可以显示NULL。

1 个答案:

答案 0 :(得分:3)

使用真JOIN

SELECT *
FROM systems sys
    LEFT JOIN diskdrives dd ON sys.id = dd.system_id
    LEFT JOIN opticaldrives od ON sys.id = od_system_id

如果LEFT JOIN上没有匹配项,使用sys.id = od_system_id将告诉服务器匹配空值而不是光盘表值。