powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Двойной подсчет из одной таблицы через LEFT JOIN
2 сообщений из 2, страница 1 из 1
Двойной подсчет из одной таблицы через LEFT JOIN
    #39447541
vipTelnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет Всем.
Столкнулся с проблемой.
Есть таблица комментариев и таблица голосов за или против этих комментариев.
Нужно в одном запросе получить все комментарии а также кол-во положительных и отрицательных голосов. http://prntscr.com/f3a6ln

Когда пытаюсь разбить на 2 запроса подсчет голосов первый допустим положительные 2 отрицательные
Примерно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT c.*, COUNT(vd.type) as down FROM `comments` AS `c` 
LEFT JOIN `comment_votes` AS `vu` ON (`vu`.`comment_id` = `c`.`id` AND `vu`.`type` = -1) 
WHERE `c`.`product_id` = 4 AND `c`.`state` = 1 
group by c.id
SELECT c.*, , COUNT(vu.type) as up FROM `comments` AS `c` 
LEFT JOIN `comment_votes` AS `vu` ON (`vu`.`comment_id` = `c`.`id` AND `vu`.`type` = 1) 
WHERE `c`.`product_id` = 4 AND `c`.`state` = 1 
group by c.id


Положительный у comment_id 2 = 3
Отрицательных у comment_id 2 = 4
Считает все правильно , но как только я пытаюсь объединять эти запросы в один, то результаты совсем не правильные
Код: sql
1.
2.
3.
4.
5.
SELECT c.*, COUNT(vd.type) as down, COUNT(vu.type) as up FROM `comments` AS `c` 
LEFT JOIN `comment_votes` AS `vd` ON (`vd`.`comment_id` = `c`.`id` AND `vd`.`type` = -1)
LEFT JOIN `comment_votes` AS `vu` ON (`vu`.`comment_id` = `c`.`id` AND `vu`.`type` = 1) 
WHERE `c`.`product_id` = 4 AND `c`.`state` = 1 
group by c.id


этот запрос показывает и положительных и у отрицательных по 12

Я так думаю что это потому что результаты от первой выборки как то умножаются на результаты второй, хотя как и почему это происходит понять не могу я же даю им разные алиасы vd и vu.
...
Рейтинг: 0 / 0
Двойной подсчет из одной таблицы через LEFT JOIN
    #39447558
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
select comments.*, sum(votes.vote=1), sum(votes.vote=-1)
from comments 
join votes
group by comments.id
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Двойной подсчет из одной таблицы через LEFT JOIN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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