Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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:

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

  • Autor

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.