2013-02-21 75 views
1

我有2個表格論壇主題表和論壇評論。MYSQL COUNT HAVING問題

我想通過計算每個主題中有多少評論來獲取所有論壇主題的列表。

評論表包含每個主題的論壇主題的PK。

我已經試過

SELECT 
    `forum_topics`.`topic_id`, 
    `forum_topics`.`topic_name`, 
    `forum_topics`.`topic_info`, 
    `forum_topics`.`topic_img`, 
    `forum_topics`.`creation_date`, 
    `forum_topics`.`is_deleted` 
FROM 
    `forum_topics` 
JOIN 
    `forum_comments` 
ON 
    `forum_comments`.`topic_id` = `forum_topics`.`topic_id` 
GROUP BY 
    `forum_topics`.`topic_id` 
HAVING 
    COUNT(`forum_comments`.`comment_id`) >= 0 
    AND `forum_topics`.`review_status` = 'reviewed'; 

這似乎不返回任何結果,但也沒有任何錯誤

希望有人能幫助

+0

數據庫結構的示例? – 2013-02-21 13:11:25

+0

我在您的查詢中看不到任何錯誤。你確定你在'forum_comments'有正確的'topic_id'有一些記錄嗎? – Aioros 2013-02-21 13:12:55

+0

你確定這個狀態是正確的嗎? – 2013-02-21 13:13:29

回答

3

試試這個

SELECT forum_topics.topic_id, forum_topics.topic_name, forum_topics.topic_info, 
    forum_topics.topic_img, forum_topics.creation_date, forum_topics.is_deleted 
FROM forum_topics 
JOIN forum_comments ON forum_comments.topic_id = forum_topics.topic_id 
WHERE forum_topics.review_status = 'reviewed' 
GROUP BY forum_topics.topic_id 
HAVING COUNT(forum_comments.comment_id) >= 0 
+0

謝謝,它似乎左加入固定它。我給你打了個勾,因爲我更瞭解你的查詢。標記的答案也是正確的 – 2013-02-21 13:38:31

+0

歡迎您!,很好,它可以幫助你! – 2013-02-21 15:08:22

3

請嘗試以下:

SELECT 
    `forum_topics`.`topic_id`, 
    `forum_topics`.`topic_name`, 
    `forum_topics`.`topic_info`, 
    `forum_topics`.`topic_img`, 
    `forum_topics`.`creation_date`, 
    `forum_topics`.`is_deleted`, 
    `forum_topics`.`review_status`, 
    COUNT(`forum_comments`.`comment_id`) count_comments 
FROM 
    `forum_topics` 
LEFT JOIN 
    `forum_comments` 
ON 
    `forum_comments`.`topic_id` = `forum_topics`.`topic_id` 
order by case when `forum_topics`.`review_status` = 'reviewed' then 1 else 2 end, 
     count_comments desc