Я работаю с опросами: у каждого опроса есть много вариантов, и пользователи могут голосовать в опросах один раз. Таким образом, у меня есть таблица «голосов» со следующими полями:
- id (идентификатор голосования)
- option_id (идентификатор выбранной опции опроса)
- user_id (идентификатор пользователя)
- poll_id (идентификатор опроса)
Итак, вот что я пытаюсь сделать : Учитывая массив poll_ids, я хочу, чтобы запрос возвращал опцию с наибольшим количеством голосов для каждого опроса. Таким образом, если я укажу poll_id's 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;
Это почти решает проблему ... но дает мне все вариантов опроса с соответствующими голосами за каждый предоставленный опрос, а не только с наиболее проголосовавшим вариантом. Если у кого-то есть идеи, я бы очень признателен. Благодаря.