Ci użytkownicy wracają, ale wracają jako null dla wszystkich kolumn zwróconych w tabelach, w których lewe połączenie nie znalazło prawidłowego połączenia.
Ze względu na to, jak działają wartości null ANSIb4_.ACTIVE=1, będą one nieważne dla tych rekordów, ponieważ wartość null <> 1
Spróbuj zrestrukturyzować swój blok Where w następujący sposób:
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)
Innym sposobem rozwiązania tego problemu jest dodanie wymagań wstępnych do lewych sprzężeń. Możesz zrobić tak, jak zrobiłem poniżej, i wykluczy to odznaki, w których AKTYWNE <> 1 wyklucza złe odznaki i nadal zwraca wszystkich użytkowników.
left outer join
REWARD.BADGES b4_
on bl3_.BADGEID=b4_.ID
AND b4_.ACTIVE=1