我正在尝试在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'
;
答案 0 :(得分:0)
使用两个不同的JOIN语句,然后使用UNION它们。
答案 1 :(得分:0)
table1
(r
)中没有数据的行有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';