Объединить два запроса с COUNT из одной таблицы в MySQL - PullRequest
0 голосов
/ 09 июня 2011

У меня есть два запроса, которые я выполняю в одной таблице:

SELECT id, COUNT(up) 
FROM comentarios 
WHERE up = 1
GROUP BY id

И

SELECT id, COUNT(down) 
FROM comentarios 
WHERE down = 2
GROUP BY id

Я пробовал что-то подобное, но не работает

SELECT t1.id, COUNT(t1.up), t2.id, COUNT(t2.down)
FROM (SELECT id, up FROM comentarios WHERE up = 1 GROUP BY id) t1
JOIN (SELECT id, down FROM comentarios WHERE down = 2 GROUP BY id) t2

ON t1.id = t2.id

Может быть, нужно ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ?

Какой лучший способ сделать это в MySQL?

Ответы [ 2 ]

1 голос
/ 09 июня 2011
SELECT id,
       SUM(CASE WHEN up = 1 THEN 1 ELSE 0 END) AS UpCount,
       SUM(CASE WHEN down = 2 THEN 1 ELSE 0 END) AS DownCount
    FROM comentarios
    GROUP BY id
1 голос
/ 09 июня 2011
select id, 
    sum(case when up = 1 then 1 end) as UpCount,
    sum(case when down = 2 then 1 end) as DownCount
from comentarios  
group by id 
...