Автор Тема: несколько COUNT() в одном запросе  (Прочитано 4382 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tryapkonator

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 92
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько COUNT() в одном запросе
« : 16 Марта 2005, 18:26:24 »
БД MySQL.
Выдераются данные из таблицы новостей. Так же LEFT JOIN креплю таблицы комментариев и рейтинга по индексу новости. Нужно сосчитать количество комментариев и количество голосов. Делаю примерно так
COUNT(comm.id_news), COUNT (reyt.id_news) в итоге получаю в обоих полях одно значение. Если убираю один LEFT JOIN и COUNT то все, естевственно работает. Новостей на странице может быть много и возможности использовать 2 запроса нет =(

Оффлайн Tryapkonator

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 92
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько COUNT() в одном запросе
« Ответ #1 : 18 Марта 2005, 17:42:17 »
нельзя юзать вложенные запросы, т.к. в нашем случае id новости не известно заранее. Помогите пожалуйсто, ничего не понимаю =(

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
несколько COUNT() в одном запросе
« Ответ #2 : 20 Марта 2005, 17:07:00 »
во-первых, пока можно сделать несколькими запросами и оптимизировать позже.
во-вторых, надо знать структуру твоих таблиц.
в-третьих, ИМХО надо
... COUNT(comm.comment_id), COUNT(reyt.reyt_id) ..... GROUP BY news.id_news
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Tryapkonator

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 92
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько COUNT() в одном запросе
« Ответ #3 : 20 Марта 2005, 17:26:57 »
Цитировать
во-первых, пока можно сделать несколькими запросами и оптимизировать позже.

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

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

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

P.S. Ура =) Макс пришел =)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
несколько COUNT() в одном запросе
« Ответ #4 : 21 Марта 2005, 15:39:45 »
Tryapkonator

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

COUNT(DISTINCT comm.comment_id), COUNT(DISTINCT reyt.reyt_id)

Оффлайн Tryapkonator

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 92
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
несколько COUNT() в одном запросе
« Ответ #5 : 21 Марта 2005, 18:44:46 »
Phoinix
Не понял как, но работает =))) В мане как-то вяло все это описано. Большое спасибо

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28