Привет, я хотел бы сделать что-то вроде следующего:
SELECT * FROM tbl_article JOIN tbl_comments ON tbl_article.id = tbl_comments.article_id ORDER BY COUNT(tbl_comments.article_id)
Кто-нибудь может подсказать, как мне заставить это работать?
Это должно сделать работу:
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)
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
РЕДАКТИРОВАТЬ: я изменил тип соединения. Статьи должны появляться независимо от того, есть ли у них соответствующие записи в таблице комментариев. Мы также сейчас группируемся по полю id в таблице статей.