2010-02-10 3 views

ответ

4

Это должно сделать работу:

SELECT 
    tbl_article.*, COUNT(tbl_comments.article_id) as total_comments 
FROM 
    tbl_article 
LEFT JOIN 
    tbl_comments ON tbl_comments.article_id = tbl_article.id 
GROUP BY 
    tbl_article.id 
ORDER BY 
    COUNT(tbl_comments.article_id) 
+0

Спасибо Даниил, то же самое с этим - отлично работает, хотя, если есть 0 комментариев к определенной статье, то он не возвращается в результаты. – Stu

+0

@Stu: Изменен мой ответ пользователю на левое соединение. Статьи без комментариев должны отображаться в результатах, с подсчетом 0. –

+0

Отлично получило это сейчас! Единственная проблема заключалась в том, что «GROUP BY tbl_comments.article_id» должно быть «GROUP BY tbl_article.id». – Stu

1
SELECT * FROM 
(
    SELECT tbl_article.id, COUNT(tbl_comments.id) AS CommentCount FROM tbl_article 
    LEFT OUTER JOIN tbl_comments ON tbl_article.id = tbl_comments.article_id 
    GROUP BY tbl_article.id 
) ra 
ORDER BY CommentCount DESC 

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

+0

Привет, Пол, это отлично работает, хотя если есть нулевые комментарии, то статья не отображается. – Stu

+0

Попробуйте с этим. Соз, бит бросился раньше :( –

Смежные вопросы