05.11.2012, Vladimír Klaus, navštíveno 7753x

MS Access
SQL

Zatím jsme vždy vybírali všechny záznamy, nyní se je naučíme filtrovat pomocí jedné nebo více podmínek.

Takto získáme všechny zákazníky, jejichž příjmení je Sobota.

SELECT * FROM Zakaznici WHERE Prijmeni = "Sobota"

SQL obrázek

A takto získáme záznamy objednávek, které byly alespoň za 1000 (korun).

SELECT * FROM Objednavky WHERE Castka >= 1000

SQL obrázek

A co když potřebujeme všechny objednávky pana Soboty, za které utratil více než 500 korun? Tak to je už složitější úkol (údaje jsou ve dvou tabulkách), o tom si povíme později v části INNER JOIN.

Kombinace podmínek se provádí pomocí logických operátorů (AND, OR apod.). Takto tedy získáme všechny zákazníky z Prahy 8, kteří se jmenují Veselý. AND = a současně, tedy musí platit obě podmínky.

SELECT * FROM Zakaznici WHERE Prijmeni = "Veselý" AND Mesto = "Praha 8"

SQL obrázek

Takto získáme všechny produkty, které se jmenují „Myš“ nebo „Klávesnice“. OR = nebo, tedy musí platit buď jedna podmínka, nebo druhá, případně obě.

Jak vidíte, výsledkem je pouze jeden záznam, protože produkt, který by se jmenoval „Klávesnice“ vůbec neexistuje.

SELECT * FROM Produkty WHERE Nazev = "Myš" OR Nazev = "Klávesnice"

SQL obrázek

Malinko složitější je sestavení dotazu, kde je v podmínce uvedeno datum. Ono jde totiž o to, že se v každé zemi zapisuje datum jinak, a proto zde bylo třeba vymyslet a stanovit jednotný zápis bez ohledu na zemi nebo nějaké lokální nastavení. Tímto zápisem je #měsíc/den/rok#.

Poznámka: V jiných databázích je možné (nutné) použít místo znaku # apostrof.

Pomocí tohoto dotazu získáme objednávky, které byly provedeny 14. 9. 2012.

SELECT * FROM Objednavky WHERE Datum = #09/14/2012#

SQL obrázek

Velmi užitečné je také použití predikátu LIKE, pomocí kterého může podmínku zadat s jistou mírou neurčitosti či volnosti.