имеет значение порядок столбцов в SQL-запросах? - PullRequest
2 голосов
/ 19 декабря 2010

Мой вопрос касается левого объединения. Я пытался подсчитать, сколько людей отслеживает определенный проект. (может быть ноль подписчиков)

теперь единственный способ заставить его работать - добавить

group by idproject

У меня вопрос, если есть способ избежать этого и только выбирать и неявно
установка этой групповой опции.

SQL:

select `project_view`.`idproject` AS `idproject`,
count(`track`.`iduser`) AS `c`,`name`
from `project_view` left join `track` using(idproject)

Я ожидал, что он будет считать ноль как ноль, но он вообще не появится,
если я пренебрегаю подсчетом, то он показывает как ноль, где нет последователей.

Ответы [ 2 ]

3 голосов
/ 19 декабря 2010

Если у вас есть предложение WHERE для указания определенного проекта, то вам не нужен GROUP BY.

SELECT project_view.idproject, COUNT(track.iduser) AS c, name
FROM project_view
LEFT JOIN track USING (idproject)
WHERE idproject = 4

Если вы хотите подсчитать для каждого проекта, то вам нужно нужен GROUP BY.

SELECT project_view.idproject, COUNT(track.iduser) AS c, name
FROM project_view
LEFT JOIN track USING (idproject)
GROUP BY idproject
1 голос
/ 19 декабря 2010

Да порядок выбора имеет значение. По соображениям производительности вы (как правило) хотите, чтобы ваш наиболее ограниченный выбор сначала сузил ваш набор данных. Это заставляет каждый последующий запрос работать с меньшим набором данных.

...