他の2つの条件に依存するテーブルから1つの行を取得する必要があるため、可能であれば問題を解決するための適切なクエリを探しています。
説明
Alevel
はの一部ですseries
。Aは(テーブルに保存された)player
を終了できます。内では、sは列を使用してソートされます。最下位の注文番号は、解決される最初のレベルです。今、私はプレイヤーが解決する必要がある次のレベルのを取得したいと思います。level
players_levels_done
series
level
order
level_id
例1
プレーヤー9はすでにレベル5を終了しています。レベル5は最下位であるため、
level_id
この特定のユーザーのシリーズ1の次の未解決レベルであるため、クエリは4を返す必要があります。
例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 | ...