Notatka Podstawowy

09. Zachowaj również brakujące dopasowania

Użyć LEFT JOIN do pokazania kategorii bez książek.

15 września 2026 ok. 2 min czytania

Po tej lekcji potrafisz

Użyć LEFT JOIN do pokazania kategorii bez książek.

LEFT JOIN zachowuje każdy wiersz lewej tabeli. Gdy nie ma dopasowania z prawej strony, jej kolumny w wyniku mają NULL. To pozwala policzyć również puste kategorie. COUNT(b.id) nie liczy NULL, natomiast COUNT(*) policzyłby wiersz reprezentujący pustą kategorię jako jeden.

SELECT k.id, k.nazwa, COUNT(b.id) AS liczba FROM kategorie AS k LEFT JOIN ksiazki AS b ON b.kategoria_id = k.id GROUP BY k.id, k.nazwa ORDER BY k.id;

Wynik: Web 3, Bazy danych 2, Sieci 1, Robotyka 0. Gdy filtrujesz prawą tabelę w WHERE, możesz odrzucić puste dopasowania i niechcący zmienić sens LEFT JOIN. Warunek ograniczający dopasowywane książki często powinien znajdować się w ON.

Teraz Twoja kolej

Pokaż wyłącznie nazwy kategorii, które nie mają żadnej książki.

Sprawdź rozwiązanie i oczekiwany efekt
SELECT k.nazwa FROM kategorie AS k LEFT JOIN ksiazki AS b ON b.kategoria_id = k.id WHERE b.id IS NULL;

Jedyny wynik to Robotyka. Sprawdzamy b.id, bo klucz główny istniejącej książki nie może być NULL.

Na co uważać

W raporcie wypożyczeń ta sama książka może mieć kilka pasujących wierszy. JOIN nie gwarantuje jednego wiersza na książkę — wynika to z relacji danych.

Zanim przejdziesz dalej: wykonaj ćwiczenie samodzielnie i dopiero wtedy oznacz lekcję jako ukończoną. Oznaczenie zapisuje Twój postęp, nie jest oceną nauczyciela.

Potwierdź operację