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

Oracle (+) gabungan luar dan nilai konstan

Saya akan menjelaskan ini dengan menggunakan sintaks "ANSI JOIN" yang setara:

Opsi 1

SELECT *
FROM TXN
LEFT JOIN CHK 
  ON TXN.CHK_ID = CHK.CHK_ID
WHERE TXN.CURRENT = 'Y'
AND CHK.CURRENT = 'Y'

Opsi 2

SELECT *
FROM TXN
LEFT JOIN CHK 
  ON TXN.CHK_ID = CHK.CHK_ID 
  AND CHK.CURRENT = 'Y'
WHERE TXN.CURRENT = 'Y'

Seperti yang Anda lihat, pada opsi 1, predikat konstan Anda diterapkan setelah LEFT JOIN ekspresi tabel ditentukan, yaitu pada hasil LEFT JOIN .

Pada opsi 2, salah satu predikat konstan Anda adalah bagian dari LEFT JOIN ekspresi.

Bagaimana cara LEFT JOIN bekerja?

Gagasan LEFT JOIN adalah ia akan mengembalikan semua baris dari LEFT sisi JOIN ekspresi, terlepas dari apakah ada baris yang cocok di sisi lain, diberikan predikat join. Jadi, di opsi 2, terlepas dari apakah Anda menemukan baris di CHK dengan CURRENT = 'Y' untuk satu baris di TXN , baris di TXN masih dikembalikan. Inilah mengapa Anda mendapatkan lebih banyak baris di opsi 2.

Juga, contoh ini harus menjelaskan mengapa Anda harus memilih sintaks "ANSI JOIN". Dari perspektif pemeliharaan / keterbacaan, jauh lebih jelas apa yang dilakukan kueri Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Subquery Berkorelasi bekerja secara berbeda untuk Oracle 12c dan 11g

  2. kompilasi prosedur oracle yang tidak valid

  3. utas DIBLOKIR saat menjalankan prosedur Oracle dari kelas Java

  4. Cara membuat kursor di dalam badan prosedur di plsql

  5. bagaimana cara membuat unggahan file dalam grails yang berfungsi dengan Oracle?