我有两张桌子:
我需要一些关于JOIN查询的建议:
SELECT Cid, Eid
FROM Component
JOIN Element ON Cid=Eid
WHERE (Cid = X and Companyid=Y and Yearid = Z)
我希望返回所有Component行,只填充它们存在的Element字段,以及它们是否存在于特定的公司和年份。
在上面的语句中,如果Element表中没有条目,则Companyid和Yearid的条件将返回零行。
非常感谢
答案 0 :(得分:0)
SELECT Cid, Eid
FROM Component
LEFT JOIN Element ON Cid = Eid
WHERE (Cid = X and Companyid=Y and Yearid = Z)
答案 1 :(得分:0)
您需要使用LEFT JOIN
来获取第一个表中没有第二个表中匹配行的行。此外,必须在ON
子句中对第二个表进行任何过滤。否则,不存在的行中的NULL
值将无法通过WHERE
测试,并从结果中删除这些行。所以它应该是:
SELECT Cid, Eid
FROM Component
LEFT JOIN Element ON Cid = Eid AND Companyid=Y and Yearid = Z
WHERE Eid = X