Rozsahy: BETWEEN
Rozsahy jako cena >= 399 AND cena <= 499 jsou tak běžné, že pro ně SQL má kratší zápis, BETWEEN … AND … (mezi … a …):
SELECT nazev, cena
FROM hry
WHERE cena BETWEEN 399 AND 499
ORDER BY cena, nazev;| nazev | cena |
|---|---|
| Bakery Story | 399 |
| Ocean Deep | 399 |
| Pixel Racer | 399 |
| Lost Temple | 499 |
| Moon Farm | 499 |
Oba konce do rozsahu patří: ve výsledku jsou hry za 399 i za 499 Kč. cena BETWEEN 399 AND 499 znamená přesně cena >= 399 AND cena <= 499, jen je to kratší a lépe se to čte. Slovo AND je tu součástí BETWEEN, nespojuje dvě podmínky.
BETWEEN funguje i s daty, protože se jako text porovnávají správně. Objednávky z léta 2024, od 1. června do 31. srpna:
SELECT id, datum
FROM objednavky
WHERE datum BETWEEN '2024-06-01' AND '2024-08-31'
ORDER BY datum;| id | datum |
|---|---|
| 7 | 2024-06-01 |
| 8 | 2024-06-18 |
| 9 | 2024-07-07 |
| 10 | 2024-08-23 |
Objednávka 7 z 1. června ve výsledku je: první i poslední den do rozsahu patří. (Kdyby data obsahovala i čas, poslední den by ve výsledku zase chyběl, jak jste viděli v minulém cvičení: '2024-08-31 18:30' je větší než '2024-08-31'. U takových dat použijte >= a < s dalším dnem.)
NOT BETWEEN najde hodnoty mimo rozsah. Hry levnější než 200 Kč nebo dražší než 1 500 Kč:
SELECT nazev, cena
FROM hry
WHERE cena NOT BETWEEN 200 AND 1500
ORDER BY cena;| nazev | cena |
|---|---|
| Cube Logic | 129 |
| Knight's Oath | 1599 |
Typická chyba: větší hodnota jako první. cena BETWEEN 499 AND 399 není chyba, ale nenajde nic: žádná cena není zároveň aspoň 499 a nejvýš 399. Menší hodnota je vždycky první, a u dat ta dřívější.
Jak psát:
Pokyny
Ukažte název a cenu her, které stojí od 649 do 899 Kč, obě hranice včetně. Použijte BETWEEN a hry seřaďte podle ceny a pak podle názvu. Výsledek začíná takto:
| nazev | cena |
|---|---|
| Mystery Manor | 649 |
| Shadow Ninja | 649 |
| Tiny Kingdoms | 649 |
| Castle Siege | 799 |
| … | … |
Pod tím ukažte ID a datum objednávek z prosince 2024, od 1. do 31. prosince, od nejstarší:
| id | datum |
|---|---|
| 13 | 2024-12-05 |
| 14 | 2024-12-20 |
| 15 | 2024-12-23 |
Začněte programovat zdarma
8/12