SQL Join and Count не может GROUP BY правильно? - PullRequest
4 голосов
/ 01 июня 2009

Итак, скажем, я хочу выбрать идентификатор всех своих сообщений в блоге, а затем подсчет комментариев, связанных с этим сообщением в блоге. Как использовать GROUP BY или ORDER BY, чтобы возвращаемый список был в порядке количества комментариев на пост?

У меня есть этот запрос, который возвращает данные, но не в том порядке, в котором я хочу? Смена группы не имеет значения:

SELECT p.ID, count(c.comment_ID) 
FROM wp_posts p, wp_comments c 
WHERE p.ID = c.comment_post_ID 
GROUP BY c.comment_post_ID;

Ответы [ 3 ]

4 голосов
/ 01 июня 2009

Я не знаком с синтаксисом до SQL92, поэтому я изложу его так, как мне знакомо:

SELECT c.comment_post_ID, COUNT(c.comment_ID)
FROM wp_comments c
GROUP BY c.comment_post_ID
ORDER BY COUNT(c.comment_ID) -- ASC or DESC

Какой движок базы данных вы используете? В SQL Server, по крайней мере, нет необходимости в соединении, если вы не извлекаете больше данных из таблицы записей. С объединением:

SELECT p.ID, COUNT(c.comment_ID)
FROM wp_posts p
JOIN wp_comments c ON c.comment_post_ID = p.ID
GROUP BY p.ID
ORDER BY COUNT(c.comment_ID)
3 голосов
/ 01 июня 2009
SELECT p.ID, count(c.comment_ID) AS [count]
FROM wp_posts p, wp_comments c 
WHERE p.ID = c.comment_post_ID 
GROUP BY c.comment_post_ID;
ORDER BY [count] DESC
0 голосов
/ 21 ноября 2012

вероятно, в таблице комментариев нет связанных данных, поэтому, пожалуйста, попробуйте сгруппировать их по идентификатору записи, и, пожалуйста, изучите операторы JOIN, это очень полезно и дает лучшие результаты

SELECT p.ID, count(c.comment_ID) 
FROM wp_posts p
LEFT JOIN wp_comments c ON (p.ID = c.comment_post_ID)
GROUP BY p.ID

Я также сталкивался с такой ситуацией в моих путешествиях по SQL-запросу:)

...