2012-01-02 83 views
0

用下面的查詢:計數查詢結果

$result = mysql_query(
"SELECT Stats.champion 
FROM Stats, Games 
WHERE Stats.game_id = Games.game_id 
AND Stats.win = 1 
AND Games.game_mode = 'ODIN'"); 

我返回以下數據集:

Ezreal 
Garen 
Pantheon 
Ahri 
Sion 
Rammus 
Nidalee 
Poppy 
Heimerdinger 
Graves 
KogMaw 
Gangplank 
Tristana 
Fizz 
Pantheon 
Pantheon 
Evelynn 
MasterYi 
Tryndamere 
Leona 
Vayne 
Malphite 
Graves 
Shaco 
Nidalee 
Graves 
Heimerdinger 
Gangplank 
JarvanIV 
Akali 

我的目標是計算每個名稱的結果。我知道一個,例如「萬神殿」,我可以這樣做:

$result = mysql_query(
"SELECT Stats.champion 
FROM Stats, Games 
WHERE Stats.game_id = Games.game_id 
AND Stats.champion = 'Pantheon' 
AND Stats.win = 1 
AND Games.game_mode = 'ODIN'"); 

$pantheonwins = mysql_num_rows($result); 
echo $pantheonwins; 

此結果包含正確的信息!

Pantheon 
Pantheon 
Pantheon 
3 

所以,因爲這給了我正確的數據,這是最有效的方式來獲得勝利數爲每個單獨的名稱,然後得到的記錄計算機百分比的人數是多少?

+0

請回到以前的問題,並選擇一個合適的答案;通過這樣做,其他人會更傾向於協助你。 – 2012-01-02 02:15:43

+0

@丹尼斯我只評論了一個答案,說它在11分鐘前爲我工作,根據你50分鐘前的情況,我怎麼能選擇正確的答案?大聲笑這些事情需要時間來執行!正如我所提到的,在一個更輕的筆記上,已經選擇了一個答案。我很感謝收到的幫助。 – pr0tocol 2012-01-02 03:07:55

+0

我指的是你以前的20個問題,但我現在看到他們甚至沒有回答:) – 2012-01-02 03:55:29

回答

3

試着改變你的查詢:現在

SELECT 
    Stats.champion, 
    count(Stats.champion) as myCount 
FROM 
    Stats, Games 
WHERE 
    Stats.game_id = Games.game_id 
    AND Stats.win = 1 
    AND Games.game_mode = 'ODIN' 
GROUP BY 
    Stats.champion 

,你應該在查詢結果中的champion相處計數。

+0

明白了它的工作夥計!非常感謝。如果你看到我關於計算百分比的問題,我不需要在這裏。抱歉!非常感謝。 – pr0tocol 2012-01-02 02:55:17

2
SELECT Stats.champion, COUNT(*) as aCount 
FROM Stats, Games 
WHERE Stats.game_id = Games.game_id 
AND Stats.win = 1 
AND Games.game_mode = 'ODIN' 
GROUP BY Stats.champion 
2

這個怎麼樣:

SELECT Stats.champion 
FROM Stats, Games 
    WHERE Stats.game_id = Games.game_id 
    AND Stats.champion = 'Pantheon' 
    AND Stats.win = 1 
    AND Games.game_mode = 'ODIN' 
UNION 
SELECT COUNT(Stats.champion) as champion 
FROM Stats, Games 
    WHERE Stats.game_id = Games.game_id 
    AND Stats.champion = 'Pantheon' 
    AND Stats.win = 1 
    AND Games.game_mode = 'ODIN' 

將返回

Champion 
============= 
Pantheon 
Pantheon 
Pantheon 
3 

,但如果你想有這樣的結果:

Champion  |  Result 
============================== 
Pantheon  |   3 

那麼你應該使用這樣的:

SELECT STATS.champion as Champion, COUNT(GAMES.game_id) as `Result` 
FROM Stats INNER JOIN Games ON Stats.game_id = Games.game_id 
WHERE Stats.win = 1 AND Games.game_mode = 'ODIN' 
GROUP BY Champion