У меня есть две таблицы, одна с городами (id и название города) и одна с фотографиями городов (city_id и т. Д.).SQL left join возвращает только одну строку вместо многих
Предположим, что я ищу город под названием Сибиу. Это должно вернуть 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%'
Это сработало, однако я не понимаю, что я сделал не так. Не могли бы вы потратить некоторое время, чтобы объяснить? Большое спасибо – SimeriaIonut
@SimeriaIonut [Агрегатные функции] (https://msdn.microsoft.com/en-IN/library/ms173454.aspx) выполняют вычисления и возвращают только одно значение, если вы хотите вернуть оставшиеся столбцы, которые вам нужно добавьте GROUP BY. Таким образом, столбцы, упомянутые в SELECT, должны быть включены в GROUP BY, кроме имени агрегатного столбца – Arulkumar