Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apakah saya salah paham bergabung?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengubah nomor (7,2) menjadi varchar di Oracle?

  2. Pengecualian Java SQL:Hasil Tertutup:berikutnya meskipun tidak ada koneksi atau hasil yang ditutup

  3. ORA-22813:nilai operan melebihi batas sistem

  4. Pengumpulan Koneksi Oracle di .Net

  5. Tidak pernah mengakhiri pemulihan berkala peserta heuristik