Я пытаюсь найти правильный способ использования JOIN
, COUNT(*)
и GROUP BY
для выполнения довольно простого запроса. Я действительно заставил его работать (см. Ниже), но из того, что я прочитал, я использую дополнительные GROUP BY
, которых у меня не должно быть.
(Примечание: проблема ниже не является моей реальной проблемой (которая имеет дело с более сложными таблицами), но я попытался найти аналогичную проблему)
У меня есть две таблицы:
Table: Person
-------------
key name cityKey
1 Alice 1
2 Bob 2
3 Charles 2
4 David 1
Table: City
-------------
key name
1 Albany
2 Berkeley
3 Chico
Я бы хотел сделать запрос в People (с некоторым предложением WHERE
), который возвращает
- количество подходящих людей в каждом городе
- ключ от города
- название города.
Если я сделаю
SELECT COUNT(Person.key) AS count, City.key AS cityKey, City.name AS cityName
FROM Person
LEFT JOIN City ON Person.cityKey = City.key
GROUP BY Person.cityKey, City.name
Я получаю желаемый результат
count cityKey cityName
2 1 Albany
2 2 Berkeley
Однако , я прочитал , что добавление последней части предложения GROUP BY
(City.name
) просто для того, чтобы заставить его работать, неверно.
Так каков правильный способ сделать это? Я пытался найти ответ в Google, но я чувствую, что есть нечто фундаментальное, чего я просто не понимаю.