我有3个表A,B和TMySQL外连接表与多个表有依赖关系
T分别持有表A和B的外键。
现在我想获得(A,B,T)的所有行,即使T是空的。
SELECT * from
A
LEFT OUTER JOIN T t1 ON t1.A_ID = A.id,
B
LEFT OUTER JOIN T t2 ON t2.B_ID = B.id
WHERE A.B_ID = B.ID
现在的问题是,我得到了太多的行,所以我添加以下内容:
AND t1.id = t2.id
但现在我根本拿不出行通过包括我试图避免在首位左外连接。
编辑:除了任何示例数据或表格布局我的问题是仅仅如果一个表T与外键关系依赖关系到超过一个表在这种情况下A + B需要2个左外连接作为给定以上或者有另一种方式?
简单地指的表A中在第二左侧加入类似建议不能因为它的工作有些用户是超出范围的,还解释 here
所以,如果你围绕两个表与括号工作:
SELECT * from (A, B)
LEFT OUTER JOIN T t ON t.A_ID = A.id and t.B_ID = B.id
我可能有误解,但是A.B_ID = B.ID的目的是什么?你可能会张贴表格定义和样本数据吗? – 2012-01-04 18:00:06
你可能想尝试这样的事情: http://stackoverflow.com/questions/4796872/full-outer-join-in-mysql – 2012-01-04 18:04:37
为了您自己的理智(在某种程度上,我们的),请不要混合','和'JOIN'表示法。尝试使用一个,最好是'JOIN'。另外,你可以()将你的查询的一部分,例如'(A LEFT JOIN T ON ???)INNER JOIN(B LEFT JOIN T ON ???)ON ???' – MatBailie 2012-01-04 18:10:45