SELECT p.*
FROM poll p
LEFT JOIN poll_answer a ON p.id_poll = a.id_poll
LEFT JOIN poll_answer_user au ON au.id_poll = p.id_poll
WHERE `archive` = 1
AND `hide` = 0
OR `enddate` < CURDATE()
Нужно подсчитать кол-во совпадений, при склейки poll_answer_user и добавить новый столбец вывода с кол-во совпадений.
Ответ
Если я правильно понимаю, вы хотите посчитать количество ответивших пользователей для каждого опроса. Буквально так:
SELECT id_poll, COUNT(*) AS cnt
FROM poll_answer_user
GROUP BY id_poll
Чтобы добавить поля из таблицы "опросы", используем это как под-запрос:
SELECT p.*, IFNULL(gau.cnt, 0) AS cnt
FROM poll AS p LEFT JOIN
(
SELECT id_poll, COUNT(*) AS cnt
FROM poll_answer_user
GROUP BY id_poll
) AS gau USING(id_poll)
WHERE
p.`archive` = 1 AND
(p.`hide` = 0 OR p.`enddate` < CURDATE())
Кстати, будте осторожны с сочетанием AND и OR. Если не учитывать приоритет операций, можно получить неожиданный результат. Скобки укажут что именно требуется.
Комментариев нет:
Отправить комментарий