在mysql中连接3个表时返回零或null

时间:2013-01-02 16:31:43

标签: mysql multiple-tables

我正在尝试在Mysql查询中加入3个表(table1,table2& table3),我想从2个表(table1& table2)中提取比较3个表中存在的公共列的匹配数据(即'。' PID')。

当加入这3个表时,table1中没有给定日期的数据('2012-12-27')然后它返回完整的空白行..这里,我想得到table2中匹配的匹配数据给定日期和'ZERO'或'NULL',其他表中没有匹配数据,即。 table1 ..而不是整个空行。

这是我尝试的代码,它返回一个完整的BLANK ROW ..

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'
;

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

table1r)中没有数据的行有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';