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