Ich versuche zu verstehen, wie eine Abfrage erstellt wird, um einige Ergebnisse basierend auf einem inneren Join herauszufiltern.So verhindern Sie Duplikate mit innerer Join-Abfrage (Postgres)
Betrachten Sie die folgende Daten:
formulation_batch
-----
id project_id name
1 1 F1.1
2 1 F1.2
3 1 F1.3
4 1 F1.all
formulation_batch_component
-----
id formulation_batch_id component_id
1 1 1
2 2 2
3 3 3
4 4 1
5 4 2
6 4 3
7 4 4
Ich möchte alle formulation_batch Datensätze mit einem project_id von 1 wählen, und hat eine formulation_batch_component mit einem component_id von 1 oder 2. So betreibe ich die folgende Abfrage:
SELECT "formulation_batch".*
FROM "formulation_batch"
INNER JOIN "formulation_batch_component"
ON "formulation_batch"."id" = "formulation_batch_component"."formulationBatch_id"
WHERE "formulation_batch"."project_id" = 1
AND (("formulation_batch_component"."component_id" = 2
OR "formulation_batch_component"."component_id" = 1))
Allerdings gibt diese einen doppelten Eintrag:
1;"F1.1"
2;"F1.2"
4;"F1.all"
4;"F1.all"
Gibt es eine Möglichkeit, diese Abfrage so zu ändern, dass ich nur die eindeutigen recentment_batch-Datensätze zurückbekomme, die den Kriterien entsprechen?
Beispiel:
1;"F1.1"
2;"F1.2"
4;"F1.all"
Vielen Dank für Ihre Zeit!
Danke, ich habe deutlich unterschieden. Es ist nicht die beste Leistung, aber immer noch besser, als es auf der Softwareebene zu filtern. – drkstr1