Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle und Left Outer Join

Diese Benutzer kommen zurück, aber sie kommen als null für alle Spalten zurück, die in den Tabellen zurückgegeben werden, in denen der linke Join keinen richtigen Join gefunden hat.

Aufgrund von ANSI-Nullwerten ist workb4_.ACTIVE=1 für diese Datensätze ungültig, da null <> 1

Versuchen Sie, Ihren where-Block wie folgt umzustrukturieren:

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)

Eine andere Möglichkeit, dies anzugehen, besteht darin, die Voraussetzungen zu Ihren linken Verknüpfungen hinzuzufügen. Sie können wie ich unten vorgehen und es werden die Abzeichen ausgeschlossen, bei denen ACTIVE <> 1 schlechte Abzeichen ausschließt und trotzdem alle Benutzer zurückgibt.

 left outer join
        REWARD.BADGES b4_ 
            on bl3_.BADGEID=b4_.ID 
                AND b4_.ACTIVE=1