MYSQL使用WHERE Criteria连接表

时间:2014-12-04 08:39:51

标签: mysql sql

我有两张桌子:

  1. 组件 - 主键:Cid
  2. 元素 - 主键:Eid,外键:Cid,其他字段:Companyid和Yearid
  3. 我需要一些关于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的条件将返回零行。

    非常感谢

2 个答案:

答案 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