Mysql запрос: выбор условного статуса - PullRequest
1 голос
/ 02 апреля 2011

У меня есть таблица для некоторых данных голосования (да, без типа) с идентификатором избирателя. структура таблицы как ниже-

`votes(topic_id, voter_id, vote_type, vote_value);`

Vote_value может быть 0 или 1 на данный момент. Таким образом, частота голосования по темам находится по следующему запросу

`SELECT topic_id, vote_type, sum(vote_value) vote_frequency 
from votes group by topic_id, vote_type;` 

результат будет как -

topic_id    vote_type   vote_frequency  
23      like        10  
45      xyz         7  
1023    fav         25

Но я хочу найти частоту и статус того, проголосовал ли конкретный избиратель по этой теме с текущим типом голосования или нет.

EDIT
Результат, который мне нужен: Позвольте мне найти голоса (как указано выше) со статусом voter_id 5, независимо от того, голосовал он или нет (1 означает, что проголосовали, а 0 - не проголосовали)

topic_id   vote_type   vote_frequency  this_voter_has_voted  
23          like         10         1  
45          xyz           7         0  
1023        fav          25         1 

Примечание: я решил использовать запрос на соединение, возможно ли избежать объединения и подзапроса?

1 Ответ

2 голосов
/ 03 апреля 2011

Да, вам не нужно JOIN или подзапрос.

SELECT topic_id,
       vote_type,
       SUM(vote_value) vote_frequency,
       MAX(CASE
             WHEN voter_id = 5 THEN 1
             ELSE 0
           END)        AS this_voter_has_voted
FROM   votes
GROUP  BY topic_id,
          vote_type;  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...