Witam,
Proszę o wyjaśnienie zasad łączenia trzech i więcej tabel oraz składni kodu, dzięki której można to osiągnąć. Do nauki stworzyłem sobie właśnie 3 proste tabelki takimi oto poleceniami:
create database Error;
use Error;
create table Osoby
(
id_osoba int primary key auto_increment,
osoba char(20)
);
create table Kolory
(
id_kolor int primary key auto_increment,
kolor char(20) not null
);
create table Osoby_Kolory
(
id_osoba int,
id_kolor int
);
alter table Osoby_Kolory add constraint foreign key (id_kolor) references Kolory(id_kolor);
alter table Osoby_Kolory add constraint foreign key (id_osoba) references Osoby(id_osoba);
insert into Osoby values (NULL, 'Jacek Placek'), (NULL, 'Osiołek Matołek'), (NULL, 'Czerwony Kapturek');
insert into Kolory values (NULL, 'biały'), (NULL, 'czerwony');
insert into Osoby_Kolory values (2, 1), (3, 2);
Jak widać - pierwsza tabela zawiera osoby, druga kolory, trzecia z kolei każdej osobie przyporządkowuje kolor. I tak - Osiołek Matołek "lubi" kolor biały, Czerwony Kapturek "lubi" czerwony, natomiast Jacek Placek nie ma przyporządkowanego żadnego koloru. I ten właśnie brak przyporządkowania chciałbym uwidocznić w tabeli wynikowej za pomocą odpowiedniego polecenia. Takie polecenie:
select Osoby.osoba, Kolory.kolor from Osoby, Kolory, Osoby_Kolory where Osoby.id_osoba = Osoby_Kolory.id_osoba and Kolory.id_kolor = Osoby_Kolory.id_kolor;
pokazuje tylko pary "dopasowane", nie widać, że Jacek Placek nie ma przyporządkowanego sobie koloru. Wiem, że można coś takiego w prosty sposób osiągnąć używając składni z "left/right/full join", jednak do tej pory nie znalazłem nigdzie przystępnego wyjaśnienia tego problemu.
Tak więc proszę o pomoc i z góry dziękuję :)