Ошибка предложения ORDER BY - PullRequest
2 голосов
/ 17 марта 2012

Эй, ребята, я получаю это исключение при попытке выполнить запрос

Столбец restaurantData.restaurantId недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.

Запрос:

SELECT 
    T1.restaurantId AS ID, 
    COUNT(T2.post_id) AS favCount 
FROM   
    restaurantData AS T1 
INNER JOIN 
    favoriteData AS T2 ON T1.restaurantId = T2.post_id 
ORDER BY 
    favCount DESC, ID DESC 

Это говорит о том, что мне нужно добавить все столбцы выбора, которые не агрегированы в предложении ORDER BY, что я уже сделал для restaurantID.Но это все еще дает мне ошибку.

Ответы [ 2 ]

4 голосов
/ 17 марта 2012

Вы используете агрегатную функцию (COUNT), поэтому вам также необходимо использовать предложение GROUP BY:

SELECT 
    T1.restaurantId AS ID, 
    COUNT(T2.post_id) AS favCount 
FROM   
    restaurantData AS T1 
INNER JOIN 
    favoriteData AS T2 ON T1.restaurantId = T2.post_id 
GROUP BY
    T1.restaurantID
ORDER BY 
    favCount DESC, ID DESC 

По сути, в вашем запросе вы хотите подсчитать строкинайдено - и вы хотите, чтобы результат был сгруппирован по каждому restaurantId - так выражается предложение GROUP BY.

4 голосов
/ 17 марта 2012

Вы пропускаете GROUP BY T1.restaurantId в запросе.

SELECT T1.restaurantId   AS ID, 
       COUNT(T2.post_id) AS favCount 
FROM   restaurantData AS T1 
       INNER JOIN favoriteData AS T2 
         ON T1.restaurantId = T2.post_id 
GROUP BY T1.restaurantId
ORDER  BY favCount DESC, 
          ID DESC 

Если у вас вообще нет предложения GROUP BY, то это дает вам совокупность всей исходной таблицы (в этом случае включение restaurantId в списке выбора недопустимо без упаковки (в совокупности), а не разбито по группам по ресторанам, как вы явно желаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...