Zum Inhalt springen

[MySQL] Seltsame Ergebnisse bei JOIN über 3 Tabellen mit SUM() und GROUP BY


Empfohlene Beiträge

Geschrieben

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:

Geschrieben

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...

Geschrieben

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? :(

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...