Wymaganie raportu brzmi: "każdego dnia generowany jest raport książek wypożyczonych danego dnia" oraz "wyświetlane są jedynie tytuły książek". To narzuca dwie kluczowe cechy zapytania:
- Projekcja (SELECT) ma zwracać tylko jedną kolumnę: tytul.
- Selekcja (WHERE) ma odfiltrować tylko te rekordy, które dotyczą bieżącego dnia, czyli takie, gdzie data_wypoz odpowiada dzisiejszej dacie.
Zapytanie SELECT tytul FROM ksiazki WHERE data_wypoz = CURRENT_DATE(); spełnia oba warunki: pobiera wyłącznie tytuły i jednocześnie ogranicza wynik do wierszy z datą wypożyczenia równą bieżącej dacie.
Dlaczego pozostałe propozycje nie spełniają wymagań?
- SELECT tytul FROM ksiazki; zwraca tytuły wszystkich książek z tabeli, bez rozróżnienia daty wypożyczenia. Brakuje filtra na "danego dnia", więc raport nie jest dzienny.
- SELECT * FROM ksiazki; dodatkowo zwraca wszystkie kolumny (m.in. identyfikatory i datę), co łamie warunek "wyświetlane są jedynie tytuły". Nawet gdyby potem aplikacja ukryła kolumny, zapytanie nadal pobiera dane nadmiarowe.
- SELECT tytul, data_wypoz FROM ksiazki WHERE data_wypoz = CURRDATE_NT_E(); nie spełnia wymogu "jedynie tytuły" (zwraca też datę) oraz zawiera niepoprawną nazwę funkcji daty, co w praktyce zakończy się błędem składniowym lub wykonania.
Wskazówka egzaminacyjna: w zadaniach "raport za dany dzień" zawsze sprawdź, czy zapytanie ma WHERE z porównaniem do bieżącej daty oraz czy lista kolumn w SELECT nie zawiera danych zbędnych dla raportu.