#sql
#sql
Вопрос:
У меня есть следующая таблица
Очки:
min max level
0 5 1
6 10 2
11 15 3
16 20 4
и мне нужно извлечь уровни в соответствии с точками. Если у меня есть 7 баллов, то уровень будет равен 2, а запрос следующим:
select level
from points
where 7 > min
AND 7 < max
что мне нужно, так это получить наивысший уровень, если баллов больше 20, например, если у меня 35 баллов, уровень должен быть 4. Как я могу это сделать?
Комментарии:
1. если я правильно понимаю вашу проблему, то:
SELECT level FROM points WHERE max > 20
должно быть то, что вы ищете2. затем он вернет все уровни
3. «точек больше 20»? Разве точки не являются таблицей ?
4. Почему оно должно быть 4-го уровня, если точек 35? Разве это не должен быть уровень 5?
Ответ №1:
Установите max в последней строке равным null:
| 16 | null | 4
И ваш запрос становится:
SELECT level
FROM points
WHERE :score >= min
AND (:score <= max OR max is null)
Примечание: лучше определить ваши диапазоны как [min, max[:
min max level
0 6 1
6 11 2
11 16 3
16 4
Затем ваш запрос становится:
SELECT level
FROM points
WHERE :score >= min
AND (:score < max OR max is null)