Schledo Geschrieben 10. Januar 2004 Geschrieben 10. Januar 2004 Ich habe ein Problem mit einem MySQL-Query, ihr könnt mir da sicher weiterhelfen Folgende Situation ist gegeben: Tabelle 1: Personendaten id (primary key), name Tabelle 2: Werte1 zu Person: id(primary key), t1_id (foreign key zu t1), wert1 Tabelle 3: Werte2 zu Person: id(primary key), t1_id (foreign key zu t1), wert2 Nun will ich ein Ergebnis haben, dass wie folgt aussieht: t1.name, t2.wert1, t3.wert2 (t2.wert1 und t3.wert2 sollen jeweils die aufsummierten Werte der Datensätze sein, die zum entsprechenden Datensatz aus t1 gehören) Problem dabei ist, dass in t2 und t3 jeweils null oder beliebig viele Datensätze zu t1 existieren. Bisheriger Ansatz: SELECT t1.name, SUM(t2.wert1) AS wert1, SUM(t3.wert2) AS wert2 FROM (t1 LEFT JOIN t2 ON t1.id = t2.t1_id) LEFT JOIN t3 ON t1.id = t3.t1_id GROUP BY t1.id Leider bekomme ich dabei als Ergebnis viel zu hohe Werte heraus, wenn sich in t2 und t3 Werte zum entsprechenden Datensatz aus t1 befinden (Produkt aus richtigem Wert und der Anzahl der Datensätze der entsprechend anderen Tabelle zum jeweiligen Datensatz in t1 (?)); wenn nur in t2 ODER t3 Werte zu t1 enthalten sind, stimmt das Ergebnis. Bin für jede Hilfe dankbar, da ich gerade ziemlich verzweifle :confused:
beetFreeQ Geschrieben 12. Januar 2004 Geschrieben 12. Januar 2004 Hmm, tja, leider merkt die SUM-Funktion doppelte Datensätze nicht und lässt sie automatisch aus. AFAIK unterstützt MySQL in der aktuellen Version endlich Subselects - damit liesse sich das lösen. Wenn du allerdings - wie die meisten - mit einer älteren Version arbeiten musst, führt wohl kein Weg dran vorbei, mehrere Selects nacheinander zu verwenden...
Schledo Geschrieben 12. Januar 2004 Autor Geschrieben 12. Januar 2004 Wie du schon vermutet hast, ist bei mir keine 4er-Version von mySQL in Aussicht, laso daher keine SubSelects und kein UNION. Natürlich könnte ich es in zwei aufeinanerfolgenden Selects machen, das hat allerdings das Problem - und das hatte ich dümmlicherweise nicht erwähnt - das ich kein ORDER BY auf die Gesamtsumme anwenden kann, es sei denn ich addiere die Summe von Query 1 direkt in Query 2 mit hinein. Das wollte ich eigentlich vermeiden. Muss ich nun wirklich - auf einen höhere mysql-Version wartend - auf die Lösung mit 2 Queries zurückgreifen?
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden