Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tại sao truy vấn này lại gây ra Kết hợp Descartes trong Oracle

Vấn đề là Oracle không biết rằng get_fiscal_year_start_date (SYSDATE) trả về một kết quả duy nhất. Vì vậy, giả sử rằng nó sẽ tạo ra nhiều hàng.

Rõ ràng là tôi không có thiết bị kiểm tra nào để sử dụng, nhưng phiên bản truy vấn này của bạn nên loại bỏ phép liên kết cartesian hợp nhất.

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 biết rằng DUAL có một hàng duy nhất và do đó truy vấn phụ sẽ trả về một giá trị.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉnh sửa tệp điều khiển trong Oracle 10g Release 2

  2. Làm cách nào để thực hiện chèn hàng loạt vào cơ sở dữ liệu Oracle bằng Python?

  3. Oracle's RETURNING INTO sử dụng trong Java (JDBC, Câu lệnh chuẩn bị)

  4. Làm thế nào để gọi một proc được lưu trữ từ bao phấn và sửa đổi con trỏ được trả về?

  5. Các cột id Oracle RAW và JDBC