Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / COUNT () + GROUP BY / 5 сообщений из 5, страница 1 из 1
07.05.2004, 04:26
    #32509968
dkcc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT () + GROUP BY
имеем на сайте новости tsite_news и комментарии к ним tsite_comments
понятно, что связь идет через tsite_news.id = tsite_comments.news_id

задача - вывести новости, при выводе новости показывать количество комментов по ней.

писАл запрос - получилось

SELECT tsite_news.*, COUNT(tsite_comments.news_id)
FROM tsite_news, tsite_comments
GROUP BY tsite_news.id

выдает для каждой новости общее количество вомментов в таблице комментов

добавляем WHERE tsite_news.id = tsite_comments.news_id

все ок, но не выводятся новости у которых нет комментов.
в общем, я расстроен. кто-нибудь может помочь?
...
Рейтинг: 0 / 0
07.05.2004, 06:17
    #32509978
max(id)
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT () + GROUP BY
Может быть тебе поможет фынкция IFNULL( )
Код: plaintext
1.
2.
3.
IFNULL(expr1,expr2) 
Если expr1 не равно NULL, то функция IFNULL() возвращает значение expr1, 
в противном случае - expr2. В зависимости от контекста функция IFNULL()
может возвращать либо числовое, либо строковое значение:
ну например:
Код: plaintext
1.
2.
3.
4.
5.
SELECT tsite_news.*, 
           IFNULL(COUNT(tsite_comments.news_id) ,  0 )
FROM tsite_news LEFT JOIN tsite_comments 
        ON tsite_news.id = tsite_comments.news_id 
GROUP BY tsite_news.id
...
Рейтинг: 0 / 0
07.05.2004, 08:59
    #32510063
Marat_L
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT () + GROUP BY
2 max(id)
Просто у него было внутреннее объединение

Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
07.05.2004, 09:46
    #32510123
max(id)
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT () + GROUP BY
Что только одним внешним соединением таблиц ничего не добьешся т.к. :
Код: plaintext
1.
COUNT(DISTINCT expr,[expr...]) 
Возвращает количество различающихся величин со значением, не равным NULL: 
Правда можно вместо COUNT(tsite_comments.news_id) использовать
COUNT(*) или COUNT(1), но тогда при отсутствии строк мы получим 1 а не как ни 0.
...
Рейтинг: 0 / 0
07.05.2004, 13:43
    #32510670
dkcc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT () + GROUP BY
запрос от max(id) fits perfectly :-)

огромное спасибо.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / COUNT () + GROUP BY / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]