sql >> Database >  >> RDS >> Oracle

Oracle en Left Outer Join

Die gebruikers komen wel terug, maar ze komen terug als null voor alle kolommen die zijn geretourneerd in de tabellen waar de linker join geen goede join heeft gevonden.

Vanwege de manier waarop ANSI-nulls workb4_.ACTIVE=1 ongeldig zijn voor deze records omdat null <> 1

Probeer je waar-blok als volgt te herstructureren:

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)

Een andere manier om dit aan te pakken, is door de vereisten toe te voegen aan uw linker joins. Je kunt doen zoals ik hieronder heb gedaan en het zal de badges uitsluiten waar ACTIEF <> 1 slechte badges uitsluit en toch alle gebruikers teruggeven.

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



  1. MySQL-trigger om een ​​veld bij te werken naar de waarde van id

  2. C++ / mysql Connector - ongedefinieerde verwijzing naar get_driver_instance - heb de eenvoudige dingen al geprobeerd

  3. sql group_concat en subquery

  4. Kan String niet gebruiken als @Id met SpringData