Anda benar dengan deskripsi #1... masalah dengan kueri Anda ada di langkah #2.
Saat Anda melakukan left join
dari kerajaan ke (keluarga &spesies), Anda meminta setiap kerajaan, bahkan jika tidak ada yang cocok (keluarga &spesies)... namun, ini tidak akan mengembalikan Anda kombinasi (keluarga &spesies) apa pun yang tidak memiliki kerajaan yang cocok.
Permintaan yang lebih dekat adalah:
select *
from reino r
full join (
familia f
right join especie e
on f.fnombre = e.efamilia
and f.freino = e.ereino
) on r.rnombre = f.freino
and r.rnombre = e.ereino;
Perhatikan bahwa left join
diganti dengan full join
...
namun, ini hanya mengembalikan famili yang terkait dengan suatu spesies... tidak mengembalikan famili apa pun yang terkait dengan kingdom tetapi bukan spesies.
Setelah membaca ulang pertanyaan Anda, ini sebenarnya yang Anda inginkan...
EDIT:Setelah dipikirkan lebih lanjut, Anda dapat menulis ulang kueri Anda seperti ini:
select *
from
especie e
left join familia f
on f.fnombre = e.efamilia
and f.freino = e.ereino
full join reino r
on r.rnombre = f.freino
and r.rnombre = e.ereino;
Saya pikir ini akan lebih disukai, karena Anda menghilangkan RIGHT JOIN
, yang biasanya tidak disukai karena gayanya yang buruk... dan tanda kurung, yang bisa menyulitkan orang untuk menguraikan dengan benar untuk menentukan seperti apa hasilnya nanti.