select * from Teater t where (
select count(*) from TeaterFaciliteter tf where tf.uid = t.uid and tf.fid in ([I]listan av valda facilitets-id:n[/I])
) = [I]antalet valda facilitets-id:n[/I]
-- vilket i ditt exempel blir
select * from Teater t where (
select count(*) from TeaterFaciliteter tf where tf.uid = t.uid and tf.fid in (1, 2, 3)
) = 3
Nix, det funkar inte, detta; tf.fid in (1, 2, 3) ger fler Teatrar än tf.fid in (1) vilket är "fel".
Alltså alla teatrar med facilitet 1,2,3 verkar hämtas.