SQL Query从多个表中提取数据,以及一些基本计算

时间:2011-03-18 09:08:12

标签: php sql

我正在努力解决问题。我知道如何做基本的SQL但是我对这个有点不了解。

我正在尝试设置一个返回排名最高的游戏图表的查询。用户可以对10个游戏进行排名。我想选择前10个游戏的列表,并根据他们的平均排名以及他们拥有的投票数量将其显示在图表中。因此,平均排名为8和20票的游戏将出现在图表上方,而不是10票和平均排名为8的游戏。

如果使用纯SQL无法做到这一点,那么我总是可以为其余的做一些编码。在这个阶段,它只是以正确的格式获取我需要的数据。

非常感谢任何帮助。

我的表格结构如下:

游戏

| id | title | platform | genre |

用户

| id | email | username | password |

| userid | gameid | vote |

我想要返回的数据格式为:

| title | platform | average rank | votes |

1 个答案:

答案 0 :(得分: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