Привет Всем.
Столкнулся с проблемой.
Есть таблица комментариев и таблица голосов за или против этих комментариев.
Нужно в одном запросе получить все комментарии а также кол-во положительных и отрицательных голосов. http://prntscr[dot]com/f3a6ln
Когда пытаюсь разбить на 2 запроса подсчет голосов первый допустим положительные 2 отрицательные
Примерно так
CODE ( SQL):
скопировать код в буфер обмена
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
Считает все правильно , но как только я пытаюсь объединять эти запросы в один, то результаты совсем не правильные
CODE ( SQL):
скопировать код в буфер обмена
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.
|