使用LEFT JOIN搜索结合WHERE子句

时间:2013-07-27 03:16:45

标签: php mysql

我需要连接来自2个不同表的数据,这些表也来自不同的数据库。我需要在1表中加入它们。

以下是插图:

TABLE1

----------
dr_no    prd_sys_code   ship_code

123         ABC1               01

321         ABC2               02

----------

表2

----------
prd_sys_code  ship_code   serialno

ABC1             01         A

ABC1             01         B

ABC1             01         C

ABC1             01         D

ABC1             01         E

ABC1             01         f
----------

表3

----------
dr_no      CSerialNo  status

123            A       P

123            B       P

123            C       P

----------

输出

----------
serialno  status

  A         P

  B         P

  C         P

  D

  E

  f

----------

我想使用左连接结合where子句但我不知道实现这个的正确方法。我玩了代码但是错误;

$fetch = mysql_query("SELECT DB1.TABLE2.serialno, DB2.TABLE3.status FROM DB1.TABLE2 LEFT JOIN DB2.TABLE3 WHERE DB1.TABLE2.prd_sys_code='ABC1' AND DB1.TABLE2.client_code='01', WHERE DB2.TABLE3.dr_no = '123'");

1 个答案:

答案 0 :(得分:1)

执行LEFT JOIN时,您需要使用ON语法来定义2个表之间的链接。此外,您的查询中不能包含2 WHERE个。见http://dev.mysql.com/doc/refman/5.0/en/join.html
试试这样的事情 -

SELECT 
   inventory.prodserial.serialno, service2.installation2.status
FROM 
   inventory.prodserial
LEFT JOIN 
   service2.installation2
ON
   inventory.prodserial.serialno = service2.installation2.CSerialNo
WHERE 
   inventory.prodserial.prd_sys_code='$prd_sys_code' 
AND 
   inventory.prodserial.ship_code='$ship_to'
AND 
   service2.installation2.dr_no = '$dr_no'

注意我必须在WHERE / AND子句中更改几个列名,以匹配已发布表中的列名。另外,请确保转义数据以防止SQL注入。