Dans ce cas il est possible d'appliquer le distinct
avant le join
le rendant éventuellement plus performant :
select fb.*
from
formulation_batch fb
inner join
(
select distinct formulationbatch_id
from formulation_batch_component
where component_id in (1, 2)
) fbc on fb.id = fbc.formulationbatch_id
where fb.project_id = 1
Remarquez comment utiliser un alias pour les noms de table pour rendre la requête plus claire. Aussi alors in
l'opérateur est très pratique. L'utilisation de guillemets doubles avec ces identifiants n'est pas nécessaire.