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

Oracle và Left Outer Tham gia

Những người dùng đó có quay lại nhưng họ quay lại dưới dạng null cho tất cả các cột được trả về trong các bảng mà phép nối bên trái không tìm thấy một phép nối thích hợp.

Do cách ANSI nulls làm việcb4_.ACTIVE =1 sẽ không hợp lệ cho các bản ghi này vì null <> 1

Hãy thử cấu trúc lại khối ở đâu của bạn như sau:

AND (b4_.ACTIVE=1 or b4_.ACTIVE is null) 
    AND (B4_.STATUS='A' or B4_.STATUS is null) 
    AND (UB2_.VISIBLE=1 or UB2_.VISIBLE is null)
    and (bl3_.ACTIVE=1 or bl3_.ACTIVE is null)

Một cách khác để giải quyết vấn đề này là thêm các điều kiện tiên quyết vào các phép nối bên trái của bạn. Bạn có thể làm như tôi đã làm bên dưới và nó sẽ loại trừ các huy hiệu trong đó ACTIVE <> 1 loại trừ các huy hiệu và vẫn trả lại tất cả người dùng.

 left outer join
        REWARD.BADGES b4_ 
            on bl3_.BADGEID=b4_.ID 
                AND b4_.ACTIVE=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. Cách thực thi trình kích hoạt và thủ tục trong oracle

  2. Cú pháp SQL hoặc hằng số cơ sở dữ liệu?

  3. GROUP BY không có chức năng tổng hợp

  4. GIỚI HẠN THU SỐ LƯỢNG LỚN đang THỰC HIỆN NGAY LẬP TỨC

  5. Visual Studio 2012 Load testing có thể chụp bộ đếm hiệu suất của máy chủ Linux và cơ sở dữ liệu Oracle không?