AND NOT EXISTS (select ...)
används för att säkerställa att underfrågan inte returnerar några rader. Det är vanligtvis bara vettigt om underfrågan är korrelerad (dvs. om den hänvisar till värden från den yttre frågan), eftersom den annars antingen kommer att vara sant för varje resultatrad (och faktiskt inte påverkar frågan), eller vara falsk för varje resultatrad (och kommer att göra att frågan inte returnerar några resultat alls, som i ditt fall). Jag tror det du vill ha är:
AND members.member_ID NOT IN (select shares.member_ID from shares where shares.asset_ID = '224')