Dana jest tabela o nazwie wycieczki z polami nazwa, cena, miejsca (jako liczba wolnych miejsc). Aby dla dowolnego zbioru danych tabeli wyświetlić jedynie nazwy tych wycieczek, dla których cena jest niższa niż 2000 złotych i mają przynajmniej cztery wolne miejsca, należy posłużyć się zapytaniem
SELECT * FROM wycieczki WHERE cena < 2000 AND miejsca > 4;
miejsca > 4 pomija wycieczki z czterema miejscami.SELECT * FROM wycieczki WHERE cena < 2000 OR miejsca > 3;
OR nie wymaga spełnienia obu warunków.SELECT nazwa FROM wycieczki WHERE cena < 2000 OR miejsca > 4;
OR wpuszcza wiersze spełniające jeden warunek, a > 4 gubi wycieczki z czterema miejscami.SELECT nazwa FROM wycieczki WHERE cena < 2000 AND miejsca > 3;
AND wymaga obu warunków, a miejsca > 3 obejmuje także cztery miejsca.Pytanie z egzaminu CKE, czerwiec 2017 (arkusz E.14-X-17.06).
Poprawne jest zapytanie SELECT nazwa FROM wycieczki WHERE cena < 2000 AND miejsca > 3;. Zadanie stawia dwa wymagania naraz, więc warunki łączy się operatorem AND - wiersz trafia do wyniku tylko wtedy, gdy spełnia oba. Ma się wyświetlić jedynie nazwa, dlatego po SELECT stoi samo pole nazwa, a nie gwiazdka.
Najwięcej uwagi wymaga liczba miejsc. „Przynajmniej cztery” znaczy 4 lub więcej, a przy liczbach całkowitych miejsca > 3 daje ten sam wynik co miejsca >= 4. Zapis miejsca > 4 pominąłby wycieczki z dokładnie czterema wolnymi miejscami. Przy przekładaniu treści na warunek warto sprawdzić wartość graniczną.
Błędne zapytania psują jeden z trzech elementów: operator logiczny, wartość graniczną albo listę kolumn. Zapytanie z OR i miejsca > 4 ma dobrą listę kolumn, ale OR wpuszcza wycieczki spełniające choćby jeden warunek, na przykład drogą wycieczkę z wieloma miejscami. Do tego warunek > 4 gubi wycieczki z dokładnie czterema miejscami.
Zapytanie z gwiazdką, AND i miejsca > 4 łączy warunki poprawnie, ale zwraca wszystkie kolumny zamiast samej nazwy i również pomija wycieczki z czterema miejscami.
Zapytanie z gwiazdką, OR i miejsca > 3 ma właściwą granicę, lecz zarówno lista kolumn, jak i operator są złe. Wszystkie trzy wymagania spełnia tylko wersja z polem nazwa, operatorem AND i warunkiem miejsca > 3.
Szybki test: weź wycieczkę za 1800 zł z czterema wolnymi miejscami. Powinna trafić do wyniku, a trafia tylko przy warunku miejsca > 3.