Jedna nebo druhá podmínka: OR

S AND musí řádek splnit všechny podmínky. S OR (nebo) stačí jedna: řádek se dostane do výsledku, když pro něj platí aspoň jedna z podmínek. Nezáleží na tom, která, a můžou platit i obě. Závodní a sportovní hry:

SELECT nazev, zanr
FROM hry
WHERE zanr = 'Závodní'
   OR zanr = 'Sportovní'
ORDER BY nazev;
nazevzanr
Goal RushSportovní
Ice Hockey ProSportovní
Pixel RacerZávodní
Turbo KartsZávodní

Všimněte si slova „a“ ve spojení „závodní a sportovní hry“. Chcete oba druhy her, ale žádná hra není závodní a zároveň sportovní, takže zanr = 'Závodní' AND zanr = 'Sportovní' by nenašlo nic. Když převádíte požadavek do SQL, myslete na jeden řádek: musí splnit obě podmínky, nebo stačí jedna? Tady stačí jedna, takže OR.

Podmínky se můžou týkat různých sloupců. Hry, které jsou hodně levné, nebo jen pro dospělé:

SELECT nazev, cena, vek_od
FROM hry
WHERE cena < 200
   OR vek_od = 18
ORDER BY nazev;
nazevcenavek_od
Cube Logic1293
Zombie Town79918

Typická chyba: sloupec napsaný jen jednou. Tento dotaz není chyba, ale najde jen závodní hry:

SELECT nazev, zanr
FROM hry
WHERE zanr = 'Závodní' OR 'Sportovní'
ORDER BY nazev;
nazevzanr
Pixel RacerZávodní
Turbo KartsZávodní

OR spojuje dvě celé podmínky a 'Sportovní' samo o sobě podmínka není, je to jen text. SQLite takový text považuje za nepravdu, a tak zbude jen první podmínka. Napište sloupec do každé podmínky: zanr = 'Závodní' OR zanr = 'Sportovní'.

Pokyny

Dotaz v editoru má ukázat zákazníky z Prahy nebo z Ostravy, ale ukazuje jen ty z Prahy. Opravte ho. Výsledek je seřazený podle jména a začíná takto:

jmenomesto
Adéla KrálováPraha
Eva NovotnáPraha
Lukáš ProcházkaOstrava
……

Pod něj přidejte dotaz, který ukáže název a cenu her levnějších než 300 Kč nebo dražších než 1 200 Kč, seřazené podle ceny:

nazevcena
Cube Logic129
Word Quest249
Goal Rush1299
Knight's Oath1599

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

5/12