2014-04-29 131 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