Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle и ляво външно присъединяване

Тези потребители се връщат, но се връщат като нула за всички колони, върнати в таблиците, където лявото съединение не намери правилно съединение.

Поради това как работят ANSI nulls b4_.ACTIVE=1 ще бъде невалиден за тези записи, защото null <> 1

Опитайте да преструктурирате вашия блок where, както следва:

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)

Друг начин да се справите с това е да добавите предпоставките към вашите леви съединения. Можете да направите както направих аз по-долу и това ще изключи значките, където ACTIVE <> 1 с изключение на лошите значки и ще върне всички потребители.

 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. Свържете се с Oracle DB с помощта на ODBC

  2. ROWID (оракул) - има ли полза от него?

  3. Издаден SQL Developer 4.0

  4. Функцията Oracle OCI OCIPasswordChange криптира ли предадената парола

  5. Извикване на функция на оракул от JPA