これらのユーザーは戻ってきますが、左側の結合で適切な結合が見つからなかったテーブルに返されたすべての列に対してnullとして戻ってきます。
null <> 1
であるため、ANSInullがどのように機能するかによりb4_.ACTIVE=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)
これに取り組む別の方法は、左結合に前提条件を追加することです。以下のように行うことができます。アクティブ<>1のバッジは除外され、不良バッジは除外されますが、それでもすべてのユーザーが返されます。
left outer join
REWARD.BADGES b4_
on bl3_.BADGEID=b4_.ID
AND b4_.ACTIVE=1