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

Gabung Luar Kiri menggunakan + masuk di Oracle 11g

TableA LEFT OUTER JOIN TableB setara dengan TableB RIGHT OUTER JOIN Table A .

Di Oracle, (+) menunjukkan tabel "opsional" di JOIN. Jadi dalam kueri pertama Anda, ini adalah P LEFT OUTER JOIN S . Dalam kueri kedua Anda, itu S RIGHT OUTER JOIN P . Mereka secara fungsional setara.

Dalam terminologi, KANAN atau KIRI menentukan sisi gabungan mana yang selalu memiliki catatan, dan sisi lainnya mungkin nol. Jadi dalam P LEFT OUTER JOIN S , P akan selalu memiliki catatan karena berada di LEFT , tapi S bisa jadi nol.

Lihat contoh ini dari java2s.com untuk penjelasan tambahan.

Untuk memperjelas, saya kira saya mengatakan bahwa terminologi tidak penting, karena hanya ada untuk membantu memvisualisasikan. Yang penting adalah Anda memahami konsep cara kerjanya.

KANAN vs KIRI

Saya telah melihat beberapa kebingungan tentang apa yang penting dalam menentukan KANAN vs KIRI dalam sintaks gabungan implisit.

KIRI LUAR GABUNG

SELECT *
FROM A, B
WHERE A.column = B.column(+)

GABUNG LUAR KANAN

SELECT *
FROM A, B
WHERE B.column(+) = A.column

Yang saya lakukan hanyalah menukar sisi istilah dalam klausa WHERE, tetapi keduanya masih setara secara fungsional. (Lihat lebih tinggi dalam jawaban saya untuk info lebih lanjut tentang itu.) Penempatan (+) menentukan KANAN atau KIRI. (Khususnya, jika (+) ada di sebelah kanan, itu LEFT JOIN. Jika (+) ada di sebelah kiri, itu RIGHT JOIN.)

Jenis GABUNG

Dua gaya GABUNG adalah GABUNG implisit dan bergabung secara eksplisit . Mereka adalah gaya penulisan yang berbeda JOIN, tetapi secara fungsional setara.

Lihat pertanyaan SO ini .

Gabung Implisit cukup daftar semua tabel bersama-sama. Kondisi bergabung ditentukan dalam klausa WHERE.

IMPLIS BERGABUNG

SELECT *
FROM A, B
WHERE A.column = B.column(+)

Gabung Eksplisit kaitkan kondisi gabungan dengan penyertaan tabel tertentu alih-alih dalam klausa WHERE.

Gabung Eksplisit

SELECT *
FROM A
LEFT OUTER JOIN B ON A.column = B.column

JOIN Implisit ini bisa lebih sulit untuk dibaca dan dipahami, dan mereka juga memiliki beberapa keterbatasan karena kondisi join dicampur dalam kondisi WHERE lainnya. Dengan demikian, JOIN implisit umumnya direkomendasikan untuk mendukung sintaks eksplisit.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memasukkan string dengan tanda kutip ganda ke dalam tabel

  2. Cara mendapatkan daftar semua tampilan terwujud di oracle

  3. Pengguna skema Oracle tidak dapat membuat tabel dalam prosedur

  4. Gabung Kiri dan Kanan Menggunakan Tanda Plus (+) di Oracle

  5. Pelajari Cara Menjalankan Prosedur di Toad Untuk Oracle