KWALIFIKACJA INF3 - CZERWIEC 2017

PYTANIE NR 17.
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
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne zapytanie musi zwrócić tylko kolumnę nazwa oraz odfiltrować wiersze spełniające oba warunki naraz: cena < 2000 i co najmniej 4 miejsca, czyli miejsca > 3. Użycie AND łączy wymagania, a nie je rozdziela jak OR.

Pełne wyjaśnienie:

Aby wyświetlić jedynie nazwy wycieczek, zapytanie powinno wybierać pojedynczą kolumnę: SELECT nazwa. Gdy użyjesz SELECT *, otrzymasz wszystkie kolumny (np. także cenę i liczbę miejsc), co nie spełnia wymogu "jedynie nazwy".

Druga część to filtracja rekordów w klauzuli WHERE. W treści są dwa warunki, które muszą być spełnione równocześnie:

  • cena jest niższa niż 2000 → zapis: cena < 2000
  • przynajmniej cztery wolne miejsca → równoważnie: miejsca > 3 (bo 4, 5, 6... spełniają nierówność)

Dlatego poprawna logika to koniunkcja: AND. Operator OR byłby błędny, bo dopuściłby wiersze spełniające tylko jeden z warunków (np. tanie wycieczki bez miejsc albo drogie, ale z wieloma miejscami).

Dlaczego pozostałe odpowiedzi są niepoprawne:

  • ... OR miejsca > 4 – błędna logika (OR zamiast AND) i dodatkowo ostrzejszy próg (> 4 oznacza co najmniej 5).
  • SELECT * ... AND miejsca > 4 – zwraca wszystkie kolumny oraz zawyża wymaganie dostępności miejsc (co najmniej 5 zamiast co najmniej 4).
  • SELECT * ... OR miejsca > 3 – zwraca wszystkie kolumny i stosuje OR, przez co wynik zawiera też rekordy niespełniające jednocześnie obu kryteriów.

W praktyce na egzaminie zwracaj uwagę na dwa typowe "haczyki": (1) czy trzeba zwrócić konkretną kolumnę, czy wszystkie, oraz (2) czy warunki mają być spełnione jednocześnie (AND), czy wystarczy jeden z nich (OR).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klauzula WHERE filtruje wiersze tabeli, czyli wybiera tylko te rekordy, które spełniają podane warunki. Dzięki temu nie pobierasz całej tabeli, tylko interesujący podzbiór danych (np. wycieczki poniżej danej ceny i z odpowiednią liczbą wolnych miejsc).
Operator AND oznacza, że wszystkie połączone nim warunki muszą być prawdziwe jednocześnie. Jeśli jeden warunek nie jest spełniony, wiersz nie trafi do wyniku. To typowy wybór, gdy kryteria mają obowiązywać równocześnie.
OR przepuszcza wiersze spełniające choć jeden warunek. W takim zadaniu dałoby to zbyt dużo wyników, np. wycieczki tanie, ale bez wystarczającej liczby miejsc, albo wycieczki droższe niż 2000, ale z wieloma wolnymi miejscami.
"Przynajmniej 4" oznacza 4 lub więcej. W SQL zapisujesz to zwykle jako miejsca >= 4. Równoważnie (dla liczb całkowitych) można użyć miejsca > 3, bo wtedy 4, 5, 6… spełniają warunek.
SELECT * zwraca wszystkie kolumny z tabeli, co bywa wygodne w testach, ale jest mniej precyzyjne i często mniej wydajne. SELECT nazwa zwraca tylko jedną kolumnę "nazwa", czyli dokładnie to, o co prosi zadanie.
Spójrz na listę po słowie SELECT. Jeśli widzisz *, pobierasz wszystkie kolumny. Jeśli widzisz konkretną listę (np. nazwa), pobierasz tylko te pola. Na egzaminie to częsty szczegół decydujący o poprawności.
> oznacza "większe niż" i nie uwzględnia wartości granicznej, a >= uwzględnia granicę. Przy progach typu "co najmniej" zwykle używa się >=. Zapis > 3 bywa równoważny dla liczb całkowitych, ale wymaga uważności.
Logicznie kolejność warunków połączonych AND zwykle nie zmienia wyniku (to wciąż ta sama koniunkcja). Jednak w praktyce optymalizator bazy może planować wykonanie różnie. Na egzaminie skup się na poprawnej logice i operatorach, nie na kolejności.
Najczęstsze pomyłki to: użycie OR zamiast AND, wybór SELECT * mimo wymogu jednej kolumny, oraz błąd progu (np. > 4 zamiast >= 4). Warto zawsze przetłumaczyć warunki na nierówności krok po kroku.
Najlepiej ćwiczyć na małych tabelach: wpisz kilka rekordów testowych i sprawdzaj, które wiersze powinny przejść przez filtr. Zmieniaj jeden element naraz: AND/OR, * vs kolumna, oraz progi liczbowe. To szybko uczy wykrywania podchwytliwych odpowiedzi.
info

To pytanie poprawnie rozwiązuje 62% zdających egzamin. średnie

Specjaliści zwracają uwagę: "Poprawne zapytanie musi zwrócić tylko kolumnę nazwa oraz odfiltrować wiersze spełniające oba warunki naraz: cena &lt; 2000 i co najmniej 4 miejsca, czyli miejsca &gt; 3."

Źródła:

  • PostgreSQL Documentation: "SELECT" (Query Language), sekcja o SELECT list i WHERE clause, https://www.postgresql.org/docs/current/sql-select.html - dostęp 2026-02-18
  • MySQL 8.0 Reference Manual: "SELECT Statement" oraz "WHERE Clause", https://dev.mysql.com/doc/refman/8.0/en/select.html - dostęp 2026-02-18
  • SQLite Documentation: "SELECT" (The SELECT Statement) – składnia WHERE i operatory logiczne, https://www.sqlite.org/lang_select.html - dostęp 2026-02-18

Materiały:

  • Dokumentacja SQL dla wybranego silnika (np. MySQL/PostgreSQL) – SELECT i WHERE
  • Ćwiczenia z logiki warunków: porównanie AND vs OR na przykładach tabel
  • Zadania praktyczne: pisanie zapytań filtrujących z różnymi progami i operatorami (>=, >, BETWEEN)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego