Здравствуйте!
Есть таблица с записями -`boycotts` с полями (id, title, description, public)
Есть таблица - `likes` с полями (boycottid, userid) - 2 записи о бойкоте с id = 1
Есть таблица - `dislikes` с полями (boycottid, userid) - 3 записи о бойкоте с id = 1
Есть таблица - `subscribtions` с полями (boycottid, userid) - 6 записей о бойкоте с id=1
1. Нужно сделать выборку из таблицы boycotts по `id` при этом включить данные о количестве лайков, дизлайков и подписчиков.
2. Я уже пробовал сконструировать запрос и заметил что колонка с лайками например будет называться COUNT(`likes`.`boycottid`). А обычно я именно по имени столбца и доставал данные из MYSQL результата. Разумеется я смогу в коде написать и такое название столбца но просто это выглядит необычно и наталкивает на мысль "может я что то делаю на верно?".
Вот такой запрос у меня получился:
SELECT
`boycotts`.`id`,
`boycotts`.`title`,
`boycotts`.`description`,
`boycotts`.`public`,
COUNT(`likes`.`boycottid`),
COUNT(`dislikes`.`boycottid`),
COUNT(`subscriptions`.`boycottid`)
FROM
`boycotts`
JOIN `likes` ON `likes`.`boycottid`=`boycotts`.`id`
JOIN `dislikes` ON `dislikes`.`boycottid`=`boycotts`.`id`
JOIN `subscriptions` ON `subscriptions`.`boycottid`=`boycotts`.`id`
WHERE `boycotts`.`id`=1
Но он почему то выдает что для первого бойкота и лайков и дизлайков и подписчиков по 36 штук хотя такого количества записей даже нет ни в одной из таблиц.
Хотя если убрать все JOIN кроме одного:
SELECT
`boycotts`.`id`,
`boycotts`.`title`,
`boycotts`.`description`,
`boycotts`.`public`,
COUNT(`likes`.`boycottid`)
FROM
`boycotts`
JOIN
`likes`
ON
`likes`.`boycottid`=`boycotts`.`id`
WHERE
`boycotts`.`id`=1
то работает нормально.