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

Mengapa kueri ini menyebabkan Gabung Cartesian Bergabung di Oracle

Masalahnya, Oracle tidak tahu bahwa get_fiscal_year_start_date (SYSDATE) mengembalikan satu hasil tunggal. Jadi diasumsikan bahwa itu akan menghasilkan banyak baris.

Jelas saya tidak memiliki test harness, tetapi versi kueri Anda ini harus menghapus gabungan cartesian join.

SELECT RTRIM (position) AS "POSITION", 
.  // Other fields 
. 
. 
FROM schema.table x 
     , ( select get_fiscal_year_start_date (SYSDATE) as fiscal_year 
         from dual ) fy
WHERE hours > 0  
AND pay = 'RGW' 
AND NOT EXISTS( SELECT position 
                FROM  schema.table2 y 
                where y.date = fy.fiscal_year
                AND y.position = x.position ) 

Oracle mengetahui bahwa DUAL memiliki satu baris, dan karenanya sub-kueri akan mengembalikan satu nilai.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara menjalankan beberapa kueri Oracle c #

  2. Cara melihat pernyataan Oracle SQL aktual yang sedang dieksekusi

  3. Fungsi PENGGUNA di Oracle

  4. Bagaimana cara mengembalikan beberapa baris dengan fungsi tersimpan pl/sql?

  5. penjualan rata-rata kuartal dengan penjualan rata-rata kuartal sebelumnya