Общие > Базы данных
несколько COUNT() в одном запросе
Tryapkonator:
БД MySQL.
Выдераются данные из таблицы новостей. Так же LEFT JOIN креплю таблицы комментариев и рейтинга по индексу новости. Нужно сосчитать количество комментариев и количество голосов. Делаю примерно так
COUNT(comm.id_news), COUNT (reyt.id_news) в итоге получаю в обоих полях одно значение. Если убираю один LEFT JOIN и COUNT то все, естевственно работает. Новостей на странице может быть много и возможности использовать 2 запроса нет =(
Tryapkonator:
нельзя юзать вложенные запросы, т.к. в нашем случае id новости не известно заранее. Помогите пожалуйсто, ничего не понимаю =(
Макс:
во-первых, пока можно сделать несколькими запросами и оптимизировать позже.
во-вторых, надо знать структуру твоих таблиц.
в-третьих, ИМХО надо
... COUNT(comm.comment_id), COUNT(reyt.reyt_id) ..... GROUP BY news.id_news
Tryapkonator:
--- Цитировать ---во-первых, пока можно сделать несколькими запросами и оптимизировать позже.
--- Конец цитаты ---
Да, так и сделал.
--- Цитировать ---COUNT(comm.comment_id), COUNT(reyt.reyt_id) ..... GROUP BY news.id_news
--- Конец цитаты ---
Так и было.
Впринципе, вроде, не сильно возврасла нагрузка, но блин какая-то непонятка. Да, кстати, я получаю одно значение, равное сумме 2-х COUNT()... Это тоже пока мне не понять. Раз 15 перечитал ман по COUNT() и так и не понял в чем ошибка.
P.S. Ура =) Макс пришел =)
Phoinix:
Tryapkonator
Хорошо что сумму, обычно произведение...
COUNT(DISTINCT comm.comment_id), COUNT(DISTINCT reyt.reyt_id)
Навигация
Перейти к полной версии