SQL查询的正确连接查询

时间:2014-03-19 20:58:17

标签: mysql sql sql-server

我目前有以下查询

SELECT * FROM tbl_Cars c
        INNER JOIN tbl_Car_Parts cp ON c.Id = cp.Id
        INNER JOIN tbl_Car_Factory cf ON cp.Id = cf.Id

但是我现在已经意识到汽车表中有一些ID不在Car Parts表中,因此我希望它们包括在我的结果中。我尝试将我的INNER JOIN更改为LEFT OUTER JOIN但是我返回的结果集没有区别?

2 个答案:

答案 0 :(得分:3)

两个的联接中使用LEFT OUTER JOIN

SELECT * FROM tbl_Cars c
    LEFT OUTER JOIN tbl_Car_Parts cp ON c.Id = cp.Id
    LEFT OUTER JOIN tbl_Car_Factory cf ON cp.Id = cf.Id

否则,第二个INNER JOIN将使LEFT OUTER JOIN表中没有ID(未加入)的记录的第一个tbl_Car_Parts无效。

LEFT OUTER JOIN之后,如果您要加入的表格与之前使用INNER JOIN加入的表格无关,则您可能只会再次使用LEFT OUTER JOIN

答案 1 :(得分:0)

LEFT JOIN应该已经解决了你的问题,不知道它为什么不起作用。 为了安全起见,我在两张桌子上都使用了Left join ...

SELECT * FROM tbl_Cars c
        LEFT JOIN tbl_Car_Parts cp ON c.Id = cp.Id
        LEFT JOIN tbl_Car_Factory cf ON cp.Id = cf.Id