sql >> Databasteknik >  >> RDS >> Oracle

Oracle och Left Outer Join

Dessa användare kommer tillbaka men de kommer tillbaka som null för alla kolumner som returneras i tabellerna där den vänstra kopplingen inte hittade en korrekt koppling.

På grund av hur ANSI-nullvärden fungerar kommer b4_.ACTIVE=1 att vara ogiltiga för dessa poster eftersom null <> 1

Försök att strukturera om ditt where-block enligt följande:

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)

Ett annat sätt att tackla detta är att lägga till förutsättningarna för dina vänstra kopplingar. Du kan göra som jag gjorde nedan och det kommer att utesluta märken där ACTIVE <> 1 exkluderar märken och fortfarande returnera alla användare.

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



  1. Hur skapar man en sekvens med startvärde från fråga?

  2. Hur man genererar DDL för alla tabeller i en databas i MySQL

  3. MySQL Fulltext Boolean Mode-sökning ger för många resultat

  4. Hur kopplar man ihop lift och MySQL?