左边将1个表连接到MYSQL中的多个表

时间:2011-06-23 07:19:10

标签: php mysql left-join

我有4个表,它们用另一个外键链接在一起,例如表2有fk_table1,表3有fk_table2,表4有fk_table3。

此链中的前3个表都具有每个条目的相应数据。但是,表4包含可选数据,因此,表3中的字段可能没有相应的条目。

但我也想要表4中的数据。这是我现在拥有的,但不起作用。

SELECT *
        FROM T1, T2, T3 LEFT JOIN T4
        WHERE T1.t1 = T2.t1
        AND T2.t2 = T3.t2
        AND T3.t3 = T4.t3

3 个答案:

答案 0 :(得分:4)

如果只有T4是可选的,请仅在该表上使用LEFT JOIN

SELECT *
FROM T1
JOIN T2 ON T1.t1 = T2.t1
JOIN T3 ON T2.t2 = T3.t2
LEFT JOIN T4 ON T3.t3 = T4.t3

答案 1 :(得分:2)

试试这个:

SELECT *
FROM T1
    LEFT JOIN T2 on T1.t1 = T2.t1
    LEFT JOIN T3 on T2.t2 = T3.t2
    LEFT JOIN T4 on T3.t3 = T4.t3

<强>更新

或者,如果您只想包含T1,T2或T3中有适当行的行,则需要使用内部联接。

SELECT *
FROM T1
    INNER JOIN T2 on T1.t1 = T2.t1
    INNER JOIN T3 on T2.t2 = T3.t2
    LEFT JOIN T4 on T3.t3 = T4.t3

答案 2 :(得分:0)

要分离表连接的逻辑,可以使用括号:

select 
    *
from 
    t1
    inner join t2 on t1.some_id = t2.some_id
    inner join (
        t3 
        left join t4 on t3.some_id = t4.some_id
    ) on t2.some_id = t3.some_id