Schledo Geschrieben 10. Januar 2004 Teilen 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: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
beetFreeQ Geschrieben 12. Januar 2004 Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schledo Geschrieben 12. Januar 2004 Autor Teilen 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.