2014-04-29 189 views
1

我有一个球员表和得分表。球员表持有国家和分数表保存每个球员的分数。我想要一个能够分别显示每个国家平均分数的查询。Mysql和PHP查询

目前我的查询是:

$queries[3]['sql'] = "SELECT country, avg(score) FROM scores JOIN players GROUP BY country DESC"; 

这将集团的国家,但它将对所有国家相同的平均分数。

感谢

+0

你确定这两个表加入正确吗? –

回答

3

你忘了连接条件。 试试这个:

$queries[3]['sql'] = "SELECT country, avg(score) FROM scores As ss JOIN players As pp where ss.PlayerId=pp.PlayerId GROUP BY country"; 
+0

我现在有以下查询给我一个消息,说“没有结果” \t $ queries [3] ['sql'] =“SELECT country ,avg(分数)FROM球员INNER JOIN分数ON players.country = scores.score GROUP BY country DESC“; – user3585410

+0

因为players.country不应该与scores.score相匹配 –

1

这是因为JOIN无条件就像CROSS JOIN,我想这是不是你想要的。你应该在ONWHERE补充条件:

SELECT 
    country, 
    AVG(score) 
FROM 
    scores JOIN players ON /* condition */ 
GROUP BY 
    country 
+0

为什么yu使用DESC? –

+0

@Code Lover:我的坏,谢谢你的提示:) – potashin

0

你需要一个子查询的球员加入到由已加入到玩家的表...例如玩家进行分组积分榜。

SELECT player.country,players.player,averagescore FROM 球员 INNER JOIN (选择球员,AVG(分数)AS averagescore FROM 国家通过INNER JOIN球员球员 players.playerid = scores.playerid组)平均水平。 ON average average.player = players.player