2011-03-18 16 views
1

我很努力地讓我的頭在查詢周圍。我知道如何去做基本的SQL,但是我對這個有點深刻。用於從多個表中提取數據的SQL查詢,以及可能的一些基本計算

我想設置一個查詢,返回排名最高的遊戲圖表。用戶可以對遊戲進行排名。我希望選擇前10名遊戲的列表,並根據他們的平均排名以及他們擁有的投票數量將其顯示在圖表中。因此,平均排名爲8和20票的遊戲將出現在圖表上方,高於10票和8的平均排名。

如果這不能用純SQL完成,那麼我總是可以爲其餘的做一些編碼。在這個階段,它只是獲取我需要的數據,而且格式正確。

任何幫助將不勝感激。

我的表結構如下:

遊戲

| id | title | platform | genre | 

用戶

| id | email | username | password | 

| userid | gameid | vote | 

我想返回的數據格式爲:

| title | platform | average rank | votes | 

感謝。

回答

3

你可以group by的遊戲,剩下的就是很簡單:

select games.title 
,  games.platform 
,  games.genre 
,  avg(votes.vote) as AvgRank 
,  count(*) as VoteCount 
from games 
join votes 
on  votes.gamesid = games.gameid 
join users 
on  users.id = votes.userid 
group by 
     games.title 
,  games.platform 
,  games.genre 
order by 
     avg(votes.vote) desc 
,  count(*) desc 
limit 10 

此查詢使用limit 10拿到第10行。如果您使用SQL Server,則使用select top 10 ...。 Oracle使用where rownum < 11

+0

非常感謝。你已經救了我幾個小時! :) – jimbo77 2011-03-18 09:29:07

相關問題