2013-01-02 58 views
0

我想在Mysql查询中加入3个表(table1,table2 & table3),我想从两个表中提取匹配数据(table1 & table2)存在于3个表格中(即“PID”)。当在mysql中加入3个表时返回零或null

当连接这3个表时,table1中没有给定日期('2012-12-27')的数据,那么它返回完整的空白行。在这里,我想从表2匹配中获得匹配数据给定的日期和'零'或'空',其他表中没有匹配的数据。 table1 ..而不是整个空白行。

这是我努力的代码,返回一个完整的空白行..

SELECT * FROM table3 b 
LEFT JOIN table1 r ON r.PID = b.PID 
LEFT JOIN table2 a ON ab.PID = b.PID 
WHERE b.Name ='stallion' AND r.Date = '2012-12-27' AND a.Date = '2012-12-27' 
; 
+0

你可以张贴一些示例数据,然后期望的结果? – Taryn

回答

0

使用两种不同的JOIN语句然后UNION它们。

+0

Hi Turcia ..谢谢你的宝贵建议:) 但是,AndreKR的答案已经整理我的问题干净。 也会实行你的建议。祝你今天愉快!! – user1943364

0

table1()中没有数据的行有r.Data = NULL,因此被您的WHERE条件过滤掉。您需要添加OR r.Date IS NULL到您的WHERE条件或移动条件ON子句:

SELECT * FROM table3 b 
LEFT JOIN table1 r ON r.PID = b.PID AND r.Date = '2012-12-27' 
LEFT JOIN table2 a ON a.PID = b.PID AND a.Date = '2012-12-27' 
WHERE b.Name ='stallion'; 
+0

嘿AndreKR, THANKYOU非常多.. :) 你已经解决了我的问题就像那样..你的更正在我的代码工作真棒..你的帮助是非常多的APRECIATED! – user1943364