Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Łączenie trzech regałów naraz

Most nie musi spinać tylko dwóch skrzydeł. Klauzule

JOIN
można łączyć łańcuchowo, dokładając kolejne regały - jeden
JOIN
po drugim.

Dwa mosty: książka, autor i kategoria

Książka ma dwa odsyłacze:

autor_id
(do
autorzy
) oraz
kategoria_id
(do
kategorie
). Możemy przejść oba mosty w jednym zapytaniu:

1SELECT k.tytul, a.nazwisko, kat.nazwa
2FROM ksiazki k
3INNER JOIN autorzy a ON k.autor_id = a.id
4INNER JOIN kategorie kat ON k.kategoria_id = kat.id;

Każdy kolejny

INNER JOIN
przerzuca następny most i dokłada kolumny z nowego regału. Aliasy (
k
,
a
,
kat
) pozwalają jednoznacznie wskazać, z której tabeli pochodzi kolumna.

Łańcuch złączeń wokół wypożyczeń

Najczęściej łączymy trzy regały wokół tabeli

wypozyczenia
. Sama tabela
wypozyczenia
to tylko zbiór numerów: kto (
czytelnik_id
), co (
ksiazka_id
), kiedy (
data_wypozyczenia
). Aby zrobić z niej czytelny raport, dokładamy nazwiska i tytuły:

1SELECT w.data_wypozyczenia, c.nazwisko, k.tytul
2FROM wypozyczenia w
3INNER JOIN czytelnicy c ON w.czytelnik_id = c.id
4INNER JOIN ksiazki k ON w.ksiazka_id = k.id;

Od której tabeli zacząć?

Warto zacząć (

FROM
) od tabeli, która ma odsyłacze do pozostałych - tutaj
wypozyczenia
. Z niej prowadzą mosty do
czytelnicy
i
ksiazki
, więc kolejne złączenia układają się naturalnie. Most za mostem - i numery zamieniają się w opowieść!

Przejdź do CodeWorlds