キャラクターのランクのリストを含むテーブルがあり、それぞれが数値 (xp) に関連付けられています。ランクが高いほど、より多くのXPが必要です。キャラクターがどのランクに属しているかを調べるためのクエリを作成する最も簡単な方法を知りたいです。アイデアはそれを使用することですサブクエリなので、文字を選択するときに
SELECT name, xp FROM characters
XPの量に基づいてキャラクターのランクを取得できます。必要な最小および最大 XP のランク テーブルで 2 つの列を使用すると、簡単です。
SELECT
name, xp
(SELECT rank FROM ranks WHERE xp BETWEEN xp_min AND xp_max) as rank
FROM characters
しかし、ランクの下限のために1列だけでやりたいと思います
更新:INTERVAL
ここは赤いニシンの
ように見えますが、検索用に保管しています
プログラムでクエリを作成する場合、INTERVAL()
関数 ( MySQL Documentation ) を使用できます。
SELECT INTERVAL(character_xp, rank1, rank2, rank3, rank4)
しかし、これを達成するためにサブクエリを使用する方法はありますか? 以下は動作しません
SELECT INTERVAL(character_xp, (SELECT rank FROM ranks ORDER by rank))
そして、これもしません:
SELECT INTERVAL(character_xp, (SELECT GROUP_CONCAT(rank ORDER BY rank) FROM ranks));
何かアドバイス?