J'ai testé la sous-requête de @ Abdullah et j'ai effectivement obtenu le contraire de ce que je voulais. Après quelques tests, je me suis retrouvé avec les requêtes imbriquées qui me donnent ce que je cherchais :
select distinct entity_id from construction
where entity_id not in (
select entity_id from construction c left outer join available a on a.id = c.component_id
where a.id is null
);