有几个表需要加入。
这是我不能让它发挥作用的一件事。让我们从一个名为systems的表开始。我想加入两个表,比如硬盘表和光盘表。并非所有系统都有光驱。
如果不存在光驱,我该如何执行?
SELECT *
FROM systems sys,
diskdrives dd,
opticaldrives od
WHERE
sys.id = dd.system_id
AND
sys.id = od.system_id
它似乎不起作用,它一直返回零结果 - 我怀疑它没有找到光驱表中的参考来匹配系统的id,所以它不会返回结果。即使光驱不存在,如何使它们连接并显示结果?如果光盘驱动器数据不可用于该系统ID,则结果可以显示NULL。
答案 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
将告诉服务器匹配空值而不是光盘表值。