select * from USER
from USER
where user_id not in
(select distinct user_id from habilitation
where project_id = X)
Le NOT IN n'est pas terrible du point de vue perf., mais reste très pratique sur des petites tables. Sinon si les tables sont vraiment très grosses, peut-être serat-ce préférable d'utiliser un NOT EXISTS...