Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych

Słowa kluczowe: AND i OR w SQL DQL w SQL SELECT w SQL WHERE w SQL

Dana jest tabela o nazwie wycieczki z polami nazwa, cena, miejsca (jako liczba wolnych miejsc). Aby wyświetlić jedynie nazwy tych wycieczek, które kosztują więcej niż 1500 złotych i nie mają już żadnego wolnego miejsca, należy posłużyć się zapytaniem

A.
SELECT nazwa FROM wycieczki WHERE cena > 1500 OR miejsca = 0;
Źle. OR zwróci też drogie wycieczki z wolnymi miejscami i tanie wyprzedane.
B.
SELECT nazwa FROM wycieczki WHERE cena > 1500 AND miejsca = 0;
Dobrze. Pole nazwa, operator AND i miejsca = 0 spełniają wszystkie wymagania.
C.
SELECT * FROM wycieczki WHERE cena > 1500 AND miejsca = 0;
Źle. Wiersze są właściwe, ale gwiazdka zwraca wszystkie kolumny zamiast samej nazwy.
D.
SELECT * FROM wycieczki WHERE cena > 1500 OR miejsca > 0;
Źle. Gwiazdka, alternatywa i miejsca > 0 to trzy błędy naraz.

Poprawne jest SELECT nazwa FROM wycieczki WHERE cena > 1500 AND miejsca = 0;. Oba warunki muszą być spełnione jednocześnie (droga i wyprzedana), więc łączy je AND. „Więcej niż 1500” to ostra nierówność cena > 1500, a „żadnego wolnego miejsca” oznacza dokładnie zero, czyli miejsca = 0. Wynik ma zawierać tylko nazwy, więc po SELECT stoi pole nazwa.

Takie zapytanie przydaje się na przykład biuru podróży do znalezienia wyprzedanych ofert premium. Przy przekładaniu zdania na SQL warto osobno sprawdzić trzy rzeczy: które kolumny wyświetlić, jak połączyć warunki i jaka jest wartość graniczna każdego z nich.

Zapytanie z OR i miejsca = 0 wyświetla właściwe kolumny i ma dobre warunki, ale łączy je niewłaściwie. OR zwróci każdą wycieczkę droższą niż 1500 zł, także z wolnymi miejscami, oraz każdą wyprzedaną, nawet tanią.

Zapytanie z gwiazdką, OR i miejsca > 0 myli się w trzech miejscach: zwraca wszystkie kolumny, łączy warunki alternatywą, a warunek miejsca > 0 opisuje wycieczki, które jeszcze MAJĄ wolne miejsca.

Zapytanie z gwiazdką, AND i miejsca = 0 wybiera dokładnie te wiersze, które trzeba, ale pokazuje wszystkie kolumny zamiast samej nazwy - a zadanie wymaga jedynie nazw. Jednocześnie wszystkie wymagania spełnia tylko zapytanie z polem nazwa, operatorem AND i warunkiem miejsca = 0.

Szybki test: wycieczka za 1800 zł z pięcioma wolnymi miejscami nie powinna trafić do wyniku. Odrzuci ją tylko zapytanie, które wymaga jednocześnie wysokiej ceny i zera miejsc.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.