Ini adalah sintaks hukum untuk menggunakan tanda kurung dalam klausa gabungan dalam FROM
, dan tanda kurung lakukan berpengaruh.
Pertimbangkan kueri ini:
WITH table_a AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 30),
table_b as ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 20),
table_c AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 10)
SELECT a.id, b.id, c.id
FROM table_a a left join ( table_b b inner join table_c c ON c.id = b.id ) ON b.id = a.id
ORDER BY 1,2,3;
Tanda kurung memungkinkan Anda untuk melakukan penggabungan dalam tabel b
dan c
dan kemudian gabungkan luar itu ke a
.
Tanpa tanda kurung, mencoba untuk menyatakan bahwa sebagai gabungan kiri tidak mungkin. Anda juga tidak akan mendapatkan baris 11-30 dari tabel a
atau baris 11-20 dari tabel c
akan menjadi null
s (tergantung bagaimana Anda mencoba melakukannya).
Perhatikan bahwa kueri di atas setara dengan:
WITH table_a AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 30),
table_b as ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 20),
table_c AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 10)
SELECT a.id, b.id, c.id
FROM table_b b inner join table_c c on c.id = b.id right join table_a a on a.id = b.id
ORDER BY 1,2,3;
, yang tidak memerlukan tanda kurung. Jadi jika Anda benar-benar ingin menghindari penggunaan tanda kurung di FROM
klausa, Anda biasanya dapat melakukannya. Secara pribadi, saya lebih suka LEFT JOIN
metode dengan tanda kurung alih-alih RIGHT JOIN
.