W zapytaniu:
SELECT model FROM samochody WHERE rocznik > 2017 AND marka = "opel";
kluczowe są dwie rzeczy:
- Lista wybieranych kolumn: po słowie SELECT podano tylko model. Oznacza to, że wynikiem będzie zestaw wartości z tej jednej kolumny. Nawet jeśli tabela ma też kolumny marka i rocznik, nie pojawią się one w rezultacie, bo nie zostały wskazane w SELECT.
- Filtrowanie w WHERE: warunek rocznik > 2017 przepuszcza tylko rekordy z rocznikiem 2018 i nowszym (nie obejmuje 2017). Warunek marka = "opel" przepuszcza tylko rekordy tej marki. Ponieważ warunki połączono operatorem AND, rekord musi spełniać oba kryteria jednocześnie.
Odpowiedź 'zafira' jest zgodna z tym, co zwraca SELECT (jedna kolumna) i z tym, że po filtracji zostaje pasujący rekord/rekordy o takim modelu.
Dlaczego pozostałe propozycje są błędne?
- 'opel zafira' sugeruje zwrócenie także wartości marki. To byłoby możliwe dopiero po zapytaniu typu SELECT marka, model albo po złączeniu pól w wyrażeniu (np. konkatenacji), czego tu nie ma.
- 'zafira; insignia' oznaczałoby, że po zastosowaniu filtrów pozostają co najmniej dwa różne modele. Przy podanym kluczu odpowiedzi zakłada się, że po filtracji pasuje tylko 'zafira'.
- 'opel zafira; opel insignia' powiela dwa problemy naraz: dodaje markę mimo braku jej w SELECT oraz zakłada dwa modele jako wynik.
Wskazówka egzaminacyjna: zawsze najpierw sprawdź, jakie kolumny są w SELECT (to determinuje format wyniku), a dopiero potem analizuj warunki w WHERE (to determinuje, które wiersze przejdą filtr).