sql >> Base de Datos >  >> RDS >> Oracle

¿Está diciendo que no tengo ninguna fila seleccionada?

Hay un par de maneras de hacer esto:

Puede usar un 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);

Otra forma (y mi método preferido) de hacer lo que quieres es:

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;

Sin embargo, dados los datos que ha mostrado, esta consulta, así como su consulta original, debería devolver cero filas. SQLFiddle aquí

Tenga en cuenta que si comenta el préstamo actual al miembro 004, se devolverá "Joe Brown" SQLFiddle aquí

Mucha suerte.