Forum Webscript.Ru

Общие => Базы данных => Тема начата: Tryapkonator от 16 Марта 2005, 18:26:24

Название: несколько COUNT() в одном запросе
Отправлено: Tryapkonator от 16 Марта 2005, 18:26:24
БД MySQL.
Выдераются данные из таблицы новостей. Так же LEFT JOIN креплю таблицы комментариев и рейтинга по индексу новости. Нужно сосчитать количество комментариев и количество голосов. Делаю примерно так
COUNT(comm.id_news), COUNT (reyt.id_news) в итоге получаю в обоих полях одно значение. Если убираю один LEFT JOIN и COUNT то все, естевственно работает. Новостей на странице может быть много и возможности использовать 2 запроса нет =(
Название: несколько COUNT() в одном запросе
Отправлено: Tryapkonator от 18 Марта 2005, 17:42:17
нельзя юзать вложенные запросы, т.к. в нашем случае id новости не известно заранее. Помогите пожалуйсто, ничего не понимаю =(
Название: несколько COUNT() в одном запросе
Отправлено: Макс от 20 Марта 2005, 17:07:00
во-первых, пока можно сделать несколькими запросами и оптимизировать позже.
во-вторых, надо знать структуру твоих таблиц.
в-третьих, ИМХО надо
... COUNT(comm.comment_id), COUNT(reyt.reyt_id) ..... GROUP BY news.id_news
Название: несколько COUNT() в одном запросе
Отправлено: Tryapkonator от 20 Марта 2005, 17:26:57
Цитировать
во-первых, пока можно сделать несколькими запросами и оптимизировать позже.

Да, так и сделал.

Цитировать
COUNT(comm.comment_id), COUNT(reyt.reyt_id) ..... GROUP BY news.id_news

Так и было.
Впринципе, вроде, не сильно возврасла нагрузка, но блин какая-то непонятка. Да, кстати, я получаю одно значение, равное сумме 2-х COUNT()... Это тоже пока мне не понять. Раз 15 перечитал ман по COUNT() и так и не понял в чем ошибка.

P.S. Ура =) Макс пришел =)
Название: несколько COUNT() в одном запросе
Отправлено: Phoinix от 21 Марта 2005, 15:39:45
Tryapkonator

Хорошо что сумму, обычно произведение...

COUNT(DISTINCT comm.comment_id), COUNT(DISTINCT reyt.reyt_id)
Название: несколько COUNT() в одном запросе
Отправлено: Tryapkonator от 21 Марта 2005, 18:44:46
Phoinix
Не понял как, но работает =))) В мане как-то вяло все это описано. Большое спасибо