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

Oracle - Gabung luar kiri dengan klausa where

Penjelasan Anda tidak berkorelasi dengan kueri Anda. Anda telah menyebutkan

"Namun saya juga perlu memasukkan klausa where tapi.... Saya masih ingin baris dari tabel sebelah kiri dikembalikan untuk setiap record di tabel sebelah kiri meskipun kondisi di klausa where tidak tidak bertemu. "

Jadi saya yakin kueri Anda terlihat seperti ini

SELECT a.*, 
       b.* 
FROM   a 
       LEFT OUTER JOIN b 
                    ON a.vin = b.vin 
WHERE  Trunc(a.rep_open_date) BETWEEN Trunc(b.check_in_date) + 1 AND 
                                      Trunc(b.check_in_date) - 1 

Di atas LEFT OUTER JOIN akan diubah menjadi INNER JOIN karena penyaringan tabel kanan di Where klausa

Jadi seperti yang Anda gunakan dalam kueri pertama, filter tabel yang tepat harus menjadi bagian dari JOIN kondisi, Yang akan mengembalikan baris dari tabel KIRI meskipun tidak ada catatan yang cocok di tabel sisi KANAN.

SELECT a.*, 
       b.* 
FROM   a 
       left outer join b 
                    ON a.vin = b.vin 
                       AND Trunc(a.rep_open_date) BETWEEN 
                           Trunc(b.check_in_date) + 1 AND 
                           Trunc(b.check_in_date) - 1 

Pembaruan :

Anda telah menggunakan antar operator seperti 10 between 11 and 9 tapi seharusnya 10 between 9 and 11

SELECT a.*, 
       b.* 
FROM   a 
       left outer join b 
                    ON a.vin = b.vin 
                       AND CAST(a.rep_open_date as date) BETWEEN 
                           CAST(b.check_in_date as date) - 1 AND 
                           CAST(b.check_in_date as date) + 1 


  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 saya bisa mendapatkan id objek baru yang dihasilkan oleh urutan DB?

  2. Oracle Database, pernyataan Pembaruan SQL tidak akan berfungsi (OLEDB)

  3. Kinerja Oracle &kuis penyetelan

  4. Spring JDBC Tidak dapat memuat kelas driver JDBC [Oracle.jdbc.driver.OracleDriver]

  5. Python Oracle DB Connect tanpa Oracle Client