【发布时间】:2015-08-14 09:33:04
【问题描述】:
我正在尝试找出与我交手的前 5 名对手。
表格如下
USERS :
user_id name email
1 : Gait Bakker : user1@test.nl
2 : Freek ter Bekke : user2@test.nl
3 : Jan Zomer : user3@test.nl
4 : Mick Dundee : user4@test.nl
5 : Sjoerd Trekhaar : user@test.nl
GAMES :
game_id type training **created_by started_by **opponent_id won_by date
1 1 1 2 2 4 2 2015-08-10
2 1 1 5 2 2 5 2015-08-10
3 1 1 4 4 2 4 2015-08-10
3 1 1 2 3 3 3 2015-08-10
问题是带有**的字段,它需要计算前5名对手。
我可以是游戏创建者(created_by),我可以是对手_id(其他人开始了游戏)。
如果我是我的对手,我还是和其他玩家交手。
编辑 请以 user-id = 2 为例。
另外:training需要为1且won_by IS NOT NULL(需要填写)
结果 SQL 与对手交手最多
user_id = 4, count = 2
user_id = 3, count = 1
user_id = 5, count = 1
这意味着我对 user-id 4 玩得最多,然后是 user_id = 3 和 user_id = 5
【问题讨论】:
-
如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
-
@Strawberry : 使用 user_id = 2,但每个登录用户都有另一个用户 ID。
-
@jarlh Training = 1 AND won_by 不为空
-
@Strawberry,你是草莓!
-
@Strawberry :请使用 user_id = 2 (信息:我的意思是当我登录时我有 user_id 2 并且我想知道我的前 5 个对手,但是当 Jan Zomer 使用 user_id 登录时3 他想知道他的前 5 个对手)