Ich habe die Unterabfrage von @Abdullah getestet und tatsächlich das Gegenteil von dem bekommen, was ich wollte. Nach ein wenig Testen landete ich bei den verschachtelten Abfragen, die mir das geben, wonach ich gesucht habe:
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
);