2013-02-21 2 views
1

У меня есть 2 таблицы в разделе темы форума и комментарии к форуму.MYSQL COUNT HAVING Issue

Я пытаюсь получить список всех тем форума с подсчетом количества комментариев в каждой теме.

В таблице комментариев содержится 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

Пример структуры вашей базы данных? –

+0

Я не вижу в вашем запросе ничего плохого. Вы уверены, что у вас есть записи в 'forum_comments' с правильным' topic_id'? – Aioros

+0

Вы уверены, что все верно? –

ответ

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

Спасибо, кажется, LEFT JOIN исправил это. Я дал вам галочку, потому что я больше понимаю ваш запрос. Ответы на метку также верны –

+0

приветствую!, Приятно, что это вам поможет! –

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 
Смежные вопросы