Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中连接3个表时返回零或null_Mysql_Multiple Tables - Fatal编程技术网

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

在mysql中连接3个表时返回零或null,mysql,multiple-tables,Mysql,Multiple Tables,我试图在Mysql查询中连接3个表(表1、表2和表3),其中我想从2个表(表1和表2)中提取匹配数据,比较3个表(即“PID”)中存在的公共列 当连接这3个表时,表1中没有给定日期('2012-12-27')的数据,则返回完整的空行。。这里,我想从表2中获取匹配数据,该表与给定日期和“零”或“空”相匹配,而另一个表中没有匹配数据,即表1。。而不是一整行空白 下面是我尝试返回一个完整的空行的代码 SELECT * FROM table3 b LEFT JOIN table1 r ON r.PID

我试图在Mysql查询中连接3个表(表1、表2和表3),其中我想从2个表(表1和表2)中提取匹配数据,比较3个表(即“PID”)中存在的公共列

当连接这3个表时,表1中没有给定日期('2012-12-27')的数据,则返回完整的空行。。这里,我想从表2中获取匹配数据,该表与给定日期和“零”或“空”相匹配,而另一个表中没有匹配数据,即表1。。而不是一整行空白

下面是我尝试返回一个完整的空行的代码

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

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

表1中没有数据的行(
r
)具有
r.data
=NULL,因此会被where条件过滤掉。您需要将
或r.Date为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';

你能发布一些样本数据和期望的结果吗?嗨,AndreKR,非常感谢……)你就这样解决了我的问题..你对我代码的修改真是太棒了。。非常感谢你的帮助!!嗨,图尔西亚。。谢谢你的宝贵建议:)然而,安德烈的回答把我的问题理清了。威尔,也一定要落实你的建议。祝您有个美好的一天!!