sql >> Database teknologi >  >> RDS >> Oracle

Oracle og Left Outer Join

Disse brugere vender tilbage, men de kommer tilbage som null for alle de kolonner, der returneres i tabellerne, hvor den venstre join ikke fandt en korrekt joinforbindelse.

På grund af hvordan ANSI nulls fungerer, vil b4_.ACTIVE=1 være ugyldige for disse poster, fordi null <> 1

Prøv at omstrukturere din where-blok som følger:

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)

En anden måde at tackle dette på er at tilføje forudsætningerne til dine venstre joins. Du kan gøre som jeg gjorde nedenfor, og det vil ekskludere de badges, hvor ACTIVE <> 1 ekskluderer badges og stadig returnere alle brugere.

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



  1. rails 3.2.2 (eller 3.2.1) + Postgresql 9.1.3 + Ubuntu 11.10 Forbindelsesfejl

  2. Sådan indstilles isolationsniveau

  3. Hvordan man laver en databaseforbindelse i anvendelse af Apache Tomcat ved hjælp af Struts 2

  4. spring tabeller over, når du kører Doctrine convert-mapping