Я работаю с опросами: у каждого опроса есть много вариантов, и пользователи могут голосовать в опросах один раз. Таким образом, у меня есть таблица "голосов" со следующими полями:
- id (идентификатор голоса)
- option_id (идентификатор выбранного варианта опроса)
- user_id (идентификатор пользователя)
- poll_id (идентификатор опроса)
Итак, вот что я пытаюсь сделать: учитывая массив poll_id, я хочу, чтобы запрос возвращал вариант, за который проголосовали больше всего для каждого опроса. Таким образом, если я даю poll_id 1 и 2, я хочу вернуть наибольшее количество голосов по вариантам опросов 1 и 2. Я пробовал следующее:
SELECT
t1.poll_id,
t1.option_id,
count(t1.option_id) AS num_votes,
t2.option_id AS user_vote
FROM
votes AS t1
JOIN
votes AS t2
ON
t1.id = t2.id
WHERE
t1.poll_id IN (30,40)
GROUP BY
t1.option_id;
Это почти помогает... но дает мне все варианты опроса с соответствующими голосами для каждого предоставленного опроса, а не только вариант с наибольшим количеством голосов. Если у кого есть идеи, буду очень признателен. Спасибо.