我有两张桌子: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 来选择战士。我有一个查询,它选择了一个类别上限 以下的所有战士……</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
,羽量级是次低重量级)。在享元的情况下,使用 0 作为下限。
我如何实现这一目标?