我需要从一个取决于其他两个条件的表中获取一行,所以如果可能的话,我正在寻找一个很好的查询来解决我的问题。
说明
Alevel
是 a 的一部分series
。Aplayer
可以完成一个level
(保存在表中players_levels_done
)。在 a中,使用列series
对level
s 进行排序order
。最低的订单号是要解决的第一级。现在我想获得level_id
玩家需要解决的下一个级别。
示例 #1
玩家 9 已完成第 5 级。由于第 5 级是最低顺序,因此查询应返回
level_id
4,因为它是该特定用户系列 1 中下一个未解决的级别。
示例 #2
玩家 19 已完成第 11 关。但第 11 关不是系列中第一个排序的关卡,因此查询应返回
level_id
12。
如果玩家解决了系列的所有级别,则查询应返回总行数 0。
桌子levels
id (level_id) | series_id | order
--------------+-----------+------
4 | 1 | 20
5 | 1 | 10
6 | 1 | 30
11 | 2 | 60
12 | 2 | 50
13 | 2 | 70
桌子players_levels_done
player_id | level_id
----------+---------
9 | 5
19 | 11
桌子series
id (series_id) | ...
---------------+----
1 | ...
2 | ...
桌子players
id (player_id) | ...
---------------+----
9 | ...
19 | ...