Existuje několik způsobů, jak to udělat:
Můžete použít anti-join, například:
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);
Další způsob (a můj preferovaný způsob), jak dělat to, co chcete, je:
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;
Vzhledem k údajům, které jste zobrazili, by však tento dotaz, stejně jako váš původní dotaz, měl vrátit nula řádků. SQLFiddle zde
Všimněte si, že pokud okomentujete aktuální půjčku členovi 004, vrátí se „Joe Brown“ SQLFiddle zde
Hodně štěstí.