2012-01-02 94 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