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

Por que você não pode usar OR ou IN com uma operação OUTER JOIN?


Você definiu uma junção interna lá, a propósito.

Por ter uma cláusula contra a mesa da direita, ela deve atender a ambos os critérios.
SELECT p.Name, a.Attribute
FROM People p
LEFT OUTER JOIN Attributes a
ON p.PersonID = a.PersonID 
WHERE a.Attribute IN ('Happy','Grouchy') -- This means that the right side must exist also
AND p.person_id IN ('Elmo', 'Oscar') 

Use INNER JOIN ou mova este WHERE para a cláusula ON como um AND