Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle e junção externa esquerda


Esses usuários voltam, mas voltam como nulos para todas as colunas retornadas nas tabelas onde a junção esquerda não encontrou uma junção adequada.

Devido à forma como ANSI nulls workb4_.ACTIVE=1 será inválido para esses registros porque null <> 1

Tente reestruturar seu bloco where da seguinte forma:
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)

Outra maneira de resolver isso é adicionar os pré-requisitos às suas junções esquerdas. Você pode fazer como eu fiz abaixo e ele excluirá os emblemas onde ACTIVE <> 1 excluindo emblemas ruins e ainda retornará todos os usuários.
 left outer join
        REWARD.BADGES b4_ 
            on bl3_.BADGEID=b4_.ID 
                AND b4_.ACTIVE=1