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.