Выборка тем форума запросом на MySQL

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
Morfius
Сообщения: 47
Зарегистрирован: 23 янв 2005, 17:53

Есть две таблицы:
sections с темами сообщений и messages с сообщениями
при выборке, нужно изъять число сообщений, принадлежащих каждой теме,

SELECT sections.section_id, sections.name, MAX( messages.date ) AS message_date , COUNT( messages.id ) AS messages_count
FROM sections, messages
WHERE messages.section_id = sections.section_id
GROUP BY sections.section_id
ORDER BY messages.date DESC

что обеспечивается "WHERE messages.section_id = sections.section_id", но может быть вариант, когда в теме сообщений ещё нет и эти темы запросом не выбираются.
при попытке вставить инструкцию IF(COUNT(messages.id)>0, messages.section_id = sections.section_id, sections.section_id)
выдаётся ошибка
#1111 - Invalid use of group function
По идее речь о COUNT(messages.id)>0.

как нужно правильно написать этот запрос?

SELECT sections.section_id, sections.name, MAX( messages.date ) AS message_date , COUNT( messages.id ) AS messages_count
FROM sections, messages
WHERE IF(COUNT(messages.id)>0, messages.section_id = sections.section_id, sections.section_id)
GROUP BY sections.section_id
ORDER BY messages.date DESC
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Посмотри тут:
forum/viewtopic.php?t=4665
или тут:
forum/viewtopic.php?t=4671
Ответить