Oracle
 sql >> Database >  >> RDS >> Oracle

Dice che non ho una riga selezionata?

Ci sono un paio di modi per farlo:

Puoi usare un anti-unione, come:

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);

Un altro modo (e il mio metodo preferito) per fare ciò che vuoi è:

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;

Tuttavia, dati i dati che hai mostrato questa query, così come la tua query originale, dovrebbero restituire zero righe. SQLFiddle qui

Si noti che se si commenta il prestito corrente al membro 004, viene restituito "Joe Brown" SQLFiddle qui

In bocca al lupo.