Ich erhalte Duplikate, wenn ich zwei LINKE VERBINDUNGEN mache, um zum "event_name" in meinem Beispiel unten zu gelangen. Ich bekomme 112 Fälle damit auf diese Weise eingerichtet. Wenn ich jedoch die 2 LINKEN VERBINDUNGSLINIEN los werde und die Abfrage ausführe, erhalte ich die richtigen 100 Datensätze ohne Duplikate. Ich habe versucht DISTINCT mit dem Code unten, aber ich bekomme immer noch 112 mit Duplikaten.So vermeiden Sie Duplikate in Sql-Abfrage über drei verbundene Tabellen
SELECT "cases"."id", "cases"."date", "cases"."name", "event"."event_name"
FROM "cases"
LEFT JOIN "middle_table" ON "cases"."serial" = "middle_table"."m_serial"
LEFT JOIN "event" ON "middle_table"."e_serial" = "event"."ev_serial"
WHERE "cases"."date" BETWEEN '2012-12-11' AND '2012-12-13'
Wie kann ich angeben, dass ich nur die genauen 100 Fälle von „Fällen“ werden soll, und dass ich etwas nicht aus den Tabellen will in der keine Zeilen mehr produzieren verbindet?
Danke!
Wie Tabellen verwandt? 1: N von 'cases' zu' middle_table'? Kannst du uns etwas darüber erzählen? –
könnten Sie einige Testdaten bereitstellen? [sql-fiddle] (http://www.sqlfiddle.com) ist großartig dafür. – Nico
In meinem Fall erhielt ich Dubletten aufgrund der Teilnahme an einer Eins-zu-viele-Verbindung.Die einzige Lösung, die ich finden konnte, war die Verwendung von Unterabfragen. A hat viele Bs. B hat viele Cs und viele Ds. D hat viele Es und viele Fs. Ich musste alle Bs holen (die einer Suchzeichenkette entsprechen), während auch alle in Verbindung stehenden Cs, Es und Fs für jede Übereinstimmung zusammengefasst werden. Ich habe einen äußeren Join verwendet, um ABC zu erhalten, und dann zwei Subabfragen verwendet, um DE und DF zu aggregieren. – bambams