php - SQL 左连接只返回一行而不是多行

标签 php mysql

我有两张表,一张有城市(id 和城市名称),一张有城市图片(city_id 等)。

假设我正在寻找名为 Sibiu 的城市。这应该返回 3 个结果,因为表中还有更多类似的城市(Miercurea Sibiului、Sibiu、Poiana Sibiului),但它只返回一个。

另外,请注意,timeline_elements 还没有城市的任何照片。

SELECT cities_countries.*, COUNT(timeline_elements.city_id) as number_of_photos 
FROM cities_countries   
LEFT JOIN timeline_elements on (cities_countries.id = timeline_elements.city_id)
WHERE cities_countries.name LIKE '%Sibiu%'

最佳答案

添加 GROUP BY 并显式提及 cities_countries 表的所有列名。我认为这些是 cities_countries 表中的列。 id、city_id、city_name

同时为每个表设置别名以提高可读性。

SELECT C.id, C.city_id, C.city_name, ....
       , COUNT(T.city_id) as number_of_photos 
FROM cities_countries C  
LEFT JOIN timeline_elements T ON C.id = T.city_id
WHERE C.name LIKE '%Sibiu%'
GROUP BY C.id, C.city_id, C.city_name, ....

关于php - SQL 左连接只返回一行而不是多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37513314/

相关文章:

php - Laravel:删除数据的 Controller 功能

javascript - 带百分比的 JQuery Ajax 请求

php - mysql不通过php将长字符串插入数据库

mysql - OUTER JOIN -> 即使是空的也想返回一些东西

php - 如何从 php 获取 JSON 数据并显示到 android 中的 textview?

php - 如何显示来自wordpress数据库的产品图片

php - Laravel 将多个产量添加到单个部分

java - 使用 HTML 字符串输入,我可以保存该字符串并将其作为 PHP exec() 命令中的参数 (java) 传递吗?

mysql - Check_Time in 显示表状态

php - 如何将mysql数据库中的数据插入到html文件中的表中?