Závorky a NOT

Když podmínka obsahuje AND i OR, záleží na tom, co z nich má přednost. Řekněme, že chcete sportovní nebo závodní hry levnější než 500 Kč, a napíšete:

SELECT nazev, zanr, cena
FROM hry
WHERE zanr = 'Sportovní' OR zanr = 'Závodní' AND cena < 500
ORDER BY nazev;
nazevzanrcena
Goal RushSportovní1299
Ice Hockey ProSportovní1199
Pixel RacerZávodní399

Goal Rush stojí 1 299 Kč, tak proč tu je? AND má přednost před OR, stejně jako v matematice násobení před sčítáním. SQLite nejdřív spojí zanr = 'Závodní' AND cena < 500 a teprve potom přidá OR zanr = 'Sportovní'. Dotaz tedy našel závodní hry levnější než 500 Kč a všechny sportovní hry bez ohledu na cenu.

Aby přednost dostalo OR, dejte ho do závorek, jako v matematice:

SELECT nazev, zanr, cena
FROM hry
WHERE (zanr = 'Sportovní' OR zanr = 'Závodní') AND cena < 500
ORDER BY nazev;
nazevzanrcena
Pixel RacerZávodní399

Teď musí být každá hra sportovní nebo závodní a zároveň stát méně než 500 Kč. Kdykoli podmínka míchá AND a OR, použijte závorky: nebudete si muset pamatovat, co má přednost, a kdo bude dotaz číst, hned uvidí, co jste mysleli.

NOT (ne) před podmínkou ji obrátí: platí tam, kde podmínka neplatí, a naopak. NOT cena < 500 je totéž co cena >= 500. Nejvíc se hodí před závorkami, kde obrátí celou podmínku v nich. Hry, které nejsou sportovní ani závodní:

SELECT nazev, zanr
FROM hry
WHERE NOT (zanr = 'Sportovní' OR zanr = 'Závodní')
ORDER BY nazev;
nazevzanr
Bakery StorySimulace
Castle SiegeStrategie
Cube LogicLogická
……

Bez závorek by NOT obrátilo jen první podmínku: NOT zanr = 'Sportovní' OR zanr = 'Závodní' najde všechny hry, které nejsou sportovní, včetně závodních.

Pokyny

Dotaz v editoru má ukázat zaplacené objednávky zákazníků s ID 6 a 8, ale ukazuje i jednu vrácenou. Přidejte závorky, aby ukázal jen zaplacené objednávky těchto dvou zákazníků:

idzakaznik_idstav
108zaplaceno
126zaplaceno
256zaplaceno

Pod něj přidejte dotaz pro stránku pro starší hráče: všechny hry kromě levných her pro nejmenší. Levné hry pro nejmenší jsou ty, které jsou vhodné od tří let a stojí méně než 400 Kč. Tuto podmínku napište do závorek a obraťte ji pomocí NOT. Ukažte název, věkovou hranici a cenu, seřazené podle ceny a pak podle názvu. Výsledek začíná takto:

nazevvek_odcena
Word Quest7249
Ocean Deep7399
Lost Temple12499
Moon Farm3499
………

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

6/12