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

Oracle - Nối bên ngoài bên trái với mệnh đề where

Giải thích của bạn không tương quan với truy vấn của bạn. Bạn đã đề cập

" Tuy nhiên, tôi cũng cần bao gồm mệnh đề where nhưng .... Tôi vẫn muốn một hàng từ bảng bên trái được trả về cho mỗi bản ghi trong bảng bên trái ngay cả khi điều kiện trong mệnh đề where là không. 'không gặp. "

Vì vậy, tôi tin rằng truy vấn của bạn trông giống như thế này

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 

Ở trên, LEFT OUTER JOIN sẽ được chuyển đổi thành INNER JOIN do việc lọc bảng bên phải trong Where mệnh đề

Vì vậy, như bạn đã sử dụng trong truy vấn đầu tiên, các bộ lọc bảng bên phải phải là một phần của JOIN điều kiện, sẽ trả về các hàng từ bảng TRÁI mặc dù không có bản ghi nào phù hợp trong bảng bên RIGHT.

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 

Cập nhật:

Bạn đã sử dụng giữa toán tử như 10 between 11 and 9 nhưng nó phải là 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. Oracle có khôi phục giao dịch do lỗi không?

  2. Các tính năng mới hàng đầu của Oracle 12c

  3. Oracle trên linux Alpine

  4. ROWNUM hoạt động như thế nào trong truy vấn phân trang?

  5. Phân tích cú pháp json qua json_table trong oracle 18