Тези потребители се връщат, но се връщат като нула за всички колони, върнати в таблиците, където лявото съединение не намери правилно съединение.
Поради това как работят ANSI nulls b4_.ACTIVE=1 ще бъде невалиден за тези записи, защото null <> 1
Опитайте да преструктурирате вашия блок where, както следва:
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)
Друг начин да се справите с това е да добавите предпоставките към вашите леви съединения. Можете да направите както направих аз по-долу и това ще изключи значките, където ACTIVE <> 1 с изключение на лошите значки и ще върне всички потребители.
left outer join
REWARD.BADGES b4_
on bl3_.BADGEID=b4_.ID
AND b4_.ACTIVE=1