Raport "książek wypożyczonych danego dnia" oznacza, że w wyniku mają znaleźć się wyłącznie te wiersze tabeli ksiazki, dla których pole data_wypoz odpowiada dacie, dla której raport jest generowany (tu: bieżący dzień). Dodatkowo w treści zadania wskazano, że wyświetlane mają być tylko tytuły, więc należy pobrać wyłącznie kolumnę tytul.
Zapytanie SELECT tytul FROM ksiazki WHERE data_wypoz = CURRENT_DATE(); spełnia oba warunki jednocześnie:
- część SELECT tytul ogranicza wynik do samych tytułów (bez identyfikatorów autora/czytelnika i bez daty),
- część WHERE data_wypoz = CURRENT_DATE() filtruje rekordy do tych, które mają datę wypożyczenia równą bieżącej dacie zwróconej przez funkcję systemową.
Dlaczego pozostałe propozycje są niepoprawne?
- SELECT tytul FROM ksiazki; zwraca tytuły wszystkich książek w tabeli, bez ograniczenia do bieżącego dnia, więc nie tworzy raportu dziennego.
- SELECT * FROM ksiazki; zwraca wszystkie kolumny dla wszystkich wierszy. To łamie wymaganie "wyświetlane są jedynie tytuły" oraz nadal nie zawiera warunku na konkretną datę.
- SELECT tytul, data_wypoz FROM ksiazki WHERE data_wypoz = CURRDATE_NT_E(); ma dwie wady: zwraca dodatkową kolumnę data_wypoz (a miały być tylko tytuły) oraz używa nazwy funkcji, która nie jest poprawną, typową funkcją zwracającą bieżącą datę w popularnych systemach DB.
W praktyce warto pamiętać, że funkcje daty mogą różnić się w zależności od silnika bazy danych. Na egzaminie kluczowe jest jednak rozpoznanie schematu: wybierz tylko wymagane kolumny + dodaj warunek WHERE ograniczający do danego dnia.