Nejprve potřebujete tabulku checkRanges
CREATE TABLE checkRanges
([checkID] int, [name] varchar(8), [low] int, [upper] int);
INSERT INTO checkRanges
([checkID], [name], [low], [upper])
VALUES
(1, '0-3', 0, 2),
(2, '3-6', 3, 5),
(4, '6-9', 6, 8),
(8, '9-12', 9, 11),
(16, '12+', 12, 999)
Podívejte se, jak checkID
jsou mocniny 2?
Pokud uživatel ve vaší aplikaci vybere 3-6
a 9-12
odešlete 2+8 = 10
do vaší db. Také by bylo skvělé, kdybyste vytvořili zaškrtávací políčko pomocí db info.
Ve své databázi provádíte bitové porovnávání, abyste vybrali správné rozsahy. Poté proveďte mezi jednotlivými rozsahy.
WITH ranges as (
SELECT *
FROM checkRanges
where checkID & 10 > 0
)
SELECT *
FROM users u
inner join ranges r
on u.Experience between r.low and r.upper
Podívejte se na to všechno dohromady Ukázka SQL Fiddle
Zahrnuji více uživatelů. Stačí změnit klauzuli where checkID & 10 > 0
otestovat jinou kombinaci.
POZNÁMKA:
Aktualizuji rozsahy. Změňte horní hodnotu na value - 1
protože between
je inkluzivní a může poskytovat duplicitní výsledky.
Pokud chcete použít starou verzi, musíte nahradit between
ve větě spojení s
u.Experience >= r.low and u.Experience *<* r.upper