Po tej lekcji potrafisz
Połączyć trzy tabele i wyjaśnić wynik bez zgadywania.
Raport ma odpowiedzieć na konkretne pytanie: kto obecnie ma jaką książkę i z jakiej kategorii? Rozpisz potrzebne kolumny: czytelnik z wypozyczenia, tytuł z ksiazki i nazwa z kategorie. Połącz najpierw wypożyczenie z książką, potem książkę z kategorią. Dopiero na końcu ogranicz wynik do daty zwrotu IS NULL.
SELECT w.czytelnik, b.tytul, k.nazwa AS kategoria, w.data_wypozyczenia
FROM wypozyczenia AS w
JOIN ksiazki AS b ON b.id = w.ksiazka_id
JOIN kategorie AS k ON k.id = b.kategoria_id
WHERE w.data_zwrotu IS NULL
ORDER BY w.data_wypozyczenia, w.id;Otrzymasz dwa wiersze: Czytelnik B — HTML na start — Web oraz Czytelnik A — SQL od zera — Bazy danych. To stan fikcyjnego zestawu danych, nie informacja o prawdziwych uczniach.
Teraz Twoja kolej
Przygotuj drugi raport: dla każdej książki liczba wszystkich wypożyczeń, również zero. Posortuj malejąco po liczbie, a remisy po id książki.
Sprawdź rozwiązanie i oczekiwany efekt
SELECT b.id, b.tytul, COUNT(w.id) AS liczba FROM ksiazki AS b LEFT JOIN wypozyczenia AS w ON w.ksiazka_id = b.id GROUP BY b.id, b.tytul ORDER BY liczba DESC, b.id;Pary id/liczba: 1/2, 3/1, 5/1, 2/0, 4/0, 6/0. LEFT JOIN zachowuje książki bez wypożyczeń.
Na co uważać
Liczba wypożyczeń nie jest liczbą różnych książek. Jeśli książkę wypożyczono dwa razy, w relacji są dwa zdarzenia.
Zanim przejdziesz dalej: wykonaj ćwiczenie samodzielnie i dopiero wtedy oznacz lekcję jako ukończoną. Oznaczenie zapisuje Twój postęp, nie jest oceną nauczyciela.