Zanim zejdziemy z mostu, poznasz dwie subtelności łączenia regałów: różnicę między
INNER a LEFT w praktyce oraz sztuczkę zwaną self-join.Wyobraź sobie czytelnika, który dopiero co się zapisał i nic nie wypożyczył.
czytelnicy z wypozyczenia - taki czytelnik zniknie, bo nie ma pary.czytelnicy z wypozyczenia - taki czytelnik zostanie, a data wypożyczenia będzie NULL.| | INNER JOIN | LEFT JOIN | |---|------------|-----------| | Wiersze bez pary | znikają | zostają (z NULL) | | Kiedy użyć | tylko kompletne pary | wszystkie wiersze z lewej |
To jedyna, ale za to fundamentalna różnica między tymi dwoma mostami.
Czasem tabelę łączymy samą ze sobą (self-join). Nadajemy jej wtedy dwa różne aliasy, jakby to były dwa osobne regały:
1SELECT a1.nazwisko, a2.nazwisko
2FROM autorzy a1
3INNER JOIN autorzy a2 ON a1.kraj = a2.kraj;To zapytanie zestawia ze sobą pary autorów z tego samego kraju. Aliasy
a1 i a2 to dwa "egzemplarze" tej samej tabeli autorzy - dzięki nim MySQL wie, o który wiersz chodzi w warunku ON i w SELECT.Self-join przydaje się wszędzie tam, gdzie porównujemy wiersze w obrębie jednej tabeli - na przykład autorów z tego samego kraju albo książki wydane w tym samym roku. To zaawansowana, ale potężna sztuczka mostowa.