Zapytanie ma zwrócić nazwy artykułów spełniających jednocześnie dwa warunki:
- pole typ ma wartość 'pralka',
- pole cena mieści się w zakresie od 1000 do 1500.
Dlatego w klauzuli WHERE musi wystąpić operator AND, który wymaga spełnienia obu kryteriów naraz. Poprawny zapis wykorzystuje BETWEEN 1000 AND 1500, czyli test przynależności do przedziału.
W SQL operator BETWEEN jest inkluzywny, co oznacza, że warunek obejmuje wartości brzegowe. W praktyce jest to skrót równoważny zapisowi:
cena >= 1000 AND cena <= 1500
To ważne, bo często studenci błędnie zakładają, że "pomiędzy" wyklucza granice.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- Zapytanie z OR (np. typ='pralka' OR cena BETWEEN ...) zwróci wszystkie pralki niezależnie od ceny oraz dodatkowo wszystkie produkty w przedziale cenowym niezależnie od typu. To nie jest "wyłącznie typ pralka" w danym zakresie.
- Wariant typ='pralka' OR (cena >= 1000 AND cena <= 1500) ma ten sam błąd logiczny: alternatywa poszerza wynik zamiast go zawężać do wspólnej części warunków.
- Wariant z cena > 1000 AND cena < 1500 tworzy przedział ekskluzywny, więc odrzuci rekordy z ceną dokładnie 1000 lub 1500. Skoro wymagany jest przedział cenowy, typowo rozumiany jako obejmujący granice w SQL, ten zapis nie spełnia warunku.
Wskazówka egzaminacyjna: gdy w treści masz dwa kryteria, szukaj w WHERE operatora AND. Gdy występuje przedział, sprawdź czy ma być inkluzywny (BETWEEN / >= <=) czy ekskluzywny (> <).