Po tej lekcji potrafisz
Napisać INNER JOIN i jednoznacznie wskazywać kolumny.
Nie trzeba powtarzać nazwy kategorii w każdym wierszu książki. Przechowujemy identyfikator, a nazwę pobieramy przez połączenie. INNER JOIN zwraca pasujące pary. ON określa warunek połączenia — w tym modelu identyfikator kategorii książki musi równać się kluczowi kategorii.
SELECT b.id, b.tytul, k.nazwa AS kategoria FROM ksiazki AS b INNER JOIN kategorie AS k ON k.id = b.kategoria_id ORDER BY b.id;Aliasy b i k skracają zapis i usuwają niejednoznaczność kolumny id, która istnieje w obu tabelach. Wynik ma sześć wierszy, bo każda książka ma dokładnie jedną istniejącą kategorię. Połączenie bez właściwego warunku mogłoby pomnożyć wiersze zamiast dopasować ich znaczenie.
Teraz Twoja kolej
Pokaż tytuły książek z kategorii Bazy danych, filtrując po nazwie kategorii, a nie jej numerze.
Sprawdź rozwiązanie i oczekiwany efekt
SELECT b.tytul FROM ksiazki AS b JOIN kategorie AS k ON k.id = b.kategoria_id WHERE k.nazwa = 'Bazy danych' ORDER BY b.id;Wynik: SQL od zera i Modelowanie danych.
Na co uważać
Id książki i id kategorii nie opisują tego samego obiektu. Warunek b.id = k.id jest tu błędem nawet wtedy, gdy przypadkiem zwraca jakieś rekordy.
Zanim przejdziesz dalej: wykonaj ćwiczenie samodzielnie i dopiero wtedy oznacz lekcję jako ukończoną. Oznaczenie zapisuje Twój postęp, nie jest oceną nauczyciela.