【发布时间】:2016-10-06 12:30:16
【问题描述】:
我被困住了,我希望得到您的帮助(建议)。我正在使用 PHP 和 Mysql,我的问题如下所示。
这是我想要实现的简化版本。我有两张表,一张是city list,一张是departments。我想 LEFT JOIN 这两个表(如果可能)并返回所有城市的列表,即使表 bus_departures 中没有连接的记录。
我可以只使用 MySQL 来完成吗,或者我必须在 PHP 中组合数组。我想看看你的解决方案。谢谢。
城市
-------------------
ID | CITY
-------------------
1 | London
2 | Paris
3 | New York
4 | Rome
5 | Zagreb
Bus_Departures
------------------------------------------
ID | DATE | CITY | No. DEPARTURES
------------------------------------------
1 | 2016-06-06 | 1 | 5
2 | 2016-06-06 | 4 | 3
3 | 2016-06-06 | 3 | 2
4 | 2016-06-07 | 3 | 4
5 | 2016-06-07 | 1 | 1
6 | 2016-06-08 | 3 | 8
7 | 2016-06-09 | 1 | 3
8 | 2016-06-09 | 4 | 2
选择
SELECT * FROM City LEFT JOIN Bus_Departures WHERE date = '2016-06-07' ORDER BY City ASC
返回
London 2016-06-07 1
New York 2016-06-07 4
我想向用户回应这个
London 2016-06-07 1
New York 2016-06-07 4
Paris 2016-06-07 - (no records at all)
Rome 2016-06-07 - (no records for this day)
Zagreb 2016-06-07 - (no records at all)
谢谢!
【问题讨论】:
-
您让任何人都很难复制粘贴您的数据/表格。请将它们作为两个单独的部分发布,而不是并排发布。也张贴数字而不是 1(伦敦)等。我们可以弄清楚谢谢
-
左连接没问题,但是在执行
left join之后,您的 WHERE 语句位于右侧表上。因此,例如,您加入的巴黎条目看起来像Paris NULL NULL并且未被选中,就像两个罗马条目看起来像Rome 2016-06-06 3和Rome 2016-06-09 2。 -
感谢e4c5的批评,下次我会尝试发布更多用户友好的表格!再次感谢 Elijan9。