Zum Inhalt springen

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


Schledo

Empfohlene Beiträge

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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