使用PHP/MySQL连接2个多列表


JOIN 2 tables with multiple columns using PHP/MySQL

我承认,我在JOIN条件方面有点弱。我想从2个表中获得一个结果集,其中有4个匹配的列。

我已经尝试了下面的代码,但我不确定它是否正确,因为我有3-4条记录(结果是正确的)。但是将来可能会有N条记录,因此我需要一个更安全的查询。

这两个表是:TABLEA和TABLEB

为多

id|pid|nid|sid|name|
--------------------
1 | 2 | 2 | 3 | test
2 | 2 | 2 | 3 | t2 
3 | 2 | 2 | 4 | t3
表b

id|pid|nid|sid|marked |
-----------------------------
1 | 2 | 2 | 3 |  y
2 | 2 | 2 | 3 |  y
3 | 2 | 2 | 4 |  n

下面是我尝试过的查询:

SELECT 
    b.marked 
FROM 
    TABLEA AS a
LEFT JOIN 
    TABLEC AS c ON a.id = c.id
LEFT JOIN  
    TABLEB AS b ON ( 
        a.id = b.id
        AND  a.pid = b.pid
        AND  a.nid = b.nid
        AND  a.sid = b.sid  
    )

我得到了预期的结果,但我不确定上面的查询对于大量的记录是完美的。

你可以这样试试吗

SELECT b.marked from TABLEA as a
LEFT JOIN TABLEC as c on a.id = c.id
LEFT JOIN  TABLEB as b1 ON a.id = b1.id
LEFT JOIN  TABLEB as b2 ON a.pid = b2.pid
LEFT JOIN  TABLEB as b3 ON a.nid = b3.nid
LEFT JOIN  TABLEB as b4 ON a.sid = b4.sid