Php 前10名收集完成-MySQL查询公式中的怪物?
我有以下表格: 用户基本数据(唯一)Php 前10名收集完成-MySQL查询公式中的怪物?,php,mysql,calculated-columns,Php,Mysql,Calculated Columns,我有以下表格: 用户基本数据(唯一) [userid][name][etc] 用户集合(一对一) [userid][game] 用户录制的播放(多对多) [userid][game][scenario][etc] 游戏基本数据(唯一) [游戏][总场景] 我想输出一个表格,以%的降序显示前10名用户的收藏播放完成百分比: 输出表 [userid] [collection_completion] 3 95% 1 81% 24
[userid][name][etc]
用户集合(一对一)[userid][game]
用户录制的播放(多对多)[userid][game][scenario][etc]
游戏基本数据(唯一)[游戏][总场景]
我想输出一个表格,以%的降序显示前10名用户的收藏播放完成百分比:
输出表
[userid] [collection_completion]
3 95%
1 81%
24 68%
etc etc
在我看来,一个用户的计算顺序是:
用户集合
和游戏基本数据
和计数(gbd.total_场景)中获取用户拥有的场景总数
COUNT(不同场景)
为该用户抓取所有录制的播放MySQL中是否有一个邪恶的怪物查询可以做到这一切,并且
限制10
?或者,在这种情况下,坚持使用PHP处理大部分工作是正确的吗?如果我正确理解您的要求,您可以尝试以下方法
SELECT userid,
us.TotalUserscenario / gbd.total_scenarios collection_completion
FROM (
SELECT userid,
game,
COUNT(scenario) TotalUserscenario
FROM UserRecordedPlays urp
GROUP BY userid,
game
) UserScenarios us INNER JOIN
GameBasicData gbd ON us.game = gbd.game
ORDER BY collection_completion DESC
LIMIT 10
您可以将百分比存储在其他地方(例如另一个表),并在更改
用户录制的播放时更新它。然后它将是一个简单的连接。。。按百分比订购。这在你的场景中可行吗?