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

Está dizendo que não tenho nenhuma linha selecionada?


Há algumas maneiras de fazer isso:

Você pode usar um anti-join, como:
SELECT m.MEMBERID,
       m.LASTNAME,
       m.FIRSTNAME
  FROM MEMBERS m
  WHERE m.MEMBERID NOT IN (SELECT DISTINCT MEMBERID
                             FROM CURRENTLOAN
                           UNION ALL
                           SELECT DISTINCT MEMBERID
                             FROM HISTORY);

Outra maneira (e meu método preferido) de fazer o que você deseja é:
SELECT DISTINCT m.MEMBERID,
                m.LASTNAME,
                m.FIRSTNAME
  FROM MEMBERS m
  LEFT OUTER JOIN (SELECT DISTINCT MEMBERID
                     FROM (SELECT MEMBERID
                             FROM CURRENTLOAN
                           UNION ALL
                           SELECT MEMBERID
                             FROM HISTORY)) u
    ON u.MEMBERID = m.MEMBERID
  WHERE u.MEMBERID IS NULL;

No entanto, considerando os dados que você mostrou, essa consulta, bem como sua consulta original, deve retornar zero linhas. SQLFiddle aqui

Observe que, se você comentar o empréstimo atual para o membro 004, "Joe Brown" será retornado SQLFiddle aqui

Boa sorte.