と の 2 つのテーブルがfighters
ありweight_divisions
ます。私weight_divisons
のテーブルは次のようになります。
id | name | upper_limit
====================================
1 | Flyweight | 125
2 | Bantamweight | 135
3 | Featherweight | 145
4 | Lightweight | 155
5 | Welterweight | 170
6 | Middleweight | 185
7 | Light Heavyweight | 205
8 | Heavyweight | 265
そして、私のfighters
テーブルは次のようになります。
id | name | weight
===========================
1 | Rob Sinclair | 155
2 | Mark Adams | 145
3 | Jack Marshamn | 185
私がやりたいのは、体重カテゴリの ID を渡して戦闘機を選択することです。カテゴリの上限を下回るすべての選手を選択する 1 つのクエリがありました…</ p >
SELECT
*
FROM
`fighters`
WHERE
`weight` <= (
SELECT
`upper_limit`
FROM
`weight_divisions`
WHERE
`id` = :weight_division
)
ORDER BY
`name` ASC
…とはいえ、次に低い体重区分の上限も下限として使いたい。
たとえば、4
(ライト級) を指定すると、155 歳以下で 145 歳以上のすべての選手が選択されます (フェザー級upper_limit
、フェザー級は次に低い階級です)。Flyweight の場合、下限として 0 を使用します。
どうすればこれを達成できますか?