【问题标题】:Return zero or null when Joining 3 tables in mysql在mysql中加入3个表时返回零或null
【发布时间】:2013-01-02 16:31:42
【问题描述】:

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

当加入这 3 个表时,table1 中没有给定 Date('2012-12-27') 的数据,然后它返回完整的空白行。在这里,我想从 table2 中获取匹配的数据给定日期和“零”或“空”,其中另一个表中没有匹配的数据,即。 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'
;

【问题讨论】:

  • 你能发布一些示例数据,然后是想要的结果吗?

标签: mysql multiple-tables


【解决方案1】:

使用两个不同的 JOIN 语句然后将它们联合起来。

【讨论】:

  • 嗨 Turcia.. 谢谢您的宝贵建议 :) 但是,AndreKR 的回答已经彻底解决了我的问题。威尔,也一定会实施你的建议。祝你有美好的一天!
【解决方案2】:

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

【讨论】:

  • 嘿,AndreKR,非常感谢.. :) 你已经解决了我的问题..您对我的代码的更正工作非常棒..非常感谢您的帮助!!
猜你喜欢
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多