2010-09-17 4 views
1

У меня есть таблица с количеством голосов, записанных в ней, каждый голос идет против поста. То, что я хочу сделать, - это подсчет всех событий каждого голосования.Количество MySQL и итого

Таблица выглядит следующим образом:

vote 
    ----- 
    1 
    2 
    3 
    1 
    2 
    3 
    4 
    5 
    2 
    2 
    2 
    2 
    ...and so on... 

Как я могу рассчитывать записи, например, В этом списке 1x2, 2x6, 3x2, 4x1 и 5x1 раз.

ответ

2

Чтобы получить то, что вы хотите, вы можете использовать GROUP BY и COUNT:

SELECT vote, COUNT(*) AS cnt 
FROM votes 
GROUP BY vote 

Результат:

 
vote cnt 
1  2 
2  6 
3  2 
4  1 
5  1 

Голосов, которые имеют нулевой результат не будет в этом наборе результатов. Если вы хотите, чтобы они включались в число с нулевым значением, вам нужно использовать OUTER JOIN с таблицей, в которой перечислены все возможные голоса.

SELECT 
    possible_votes.vote, 
    COUNT(votes.vote) AS cnt 
FROM possible_votes 
LEFT JOIN votes ON possible_votes.vote = votes.vote 
GROUP BY possible_votes.vote 

Результат:

 
vote cnt 
1  2 
2  6 
3  2 
4  1 
5  1 
6  0 
3
select vote, count(votes) as vt 
from t_your_table 
group by vote 
+0

Как эхо результат в PHP? – CLiown

+0

, если вы используете $ row = mysql_fetch_object ($ result), вы можете использовать $ row-> vote и $ row-> vt (что является общим голосом за этот конкретный голос $ row->). – MoeAmine

1

Проверка MySQL руководство для GROUP BY в сочетании с COUNT.

0
SELECT vote, COUNT(*) as total 
FROM votes 
GROUP BY vote 
Смежные вопросы