Rolf B: mysql Abfrage mit Teilsummen

Beitrag lesen

Hallo Jörg,

Muss ich dazu php bemühen

Das, oder einen Reportgenerator.

Grund 1: SQL ist ein Datenlieferant. Kein Datenaufbereiter. Der Versuch, mit SQL Mitteln die Darstellung der Daten zu „schönen“, kann gelegentlich gelingen, ist aber nicht der Sinn von SQL.

Grund 2: Ein SELECT liefert entweder die Details oder eine Aggregation. Nicht beides auf einmal. Die Idee einer relationalen DB ist, dass alle Rows einer Table (und damit auch die Rows eines SELECT-Ergebnisses) inhaltlich ähnlich sind. Details vs Aggregation widerspricht dem.

Eine Teilsumme in der Std-Spalte würde auch bedeuten, dass der Wert in dieser Spalte unterschiedliche Bedeutungen hat. Mal eine Stundenzahl (nehme ich an), mal die Summe der Stunden für diesen Tag. Automatische Folgefrage des kleinen Programmierers: Woran erkenne ich beim Lesen des Abfrageergebnisses, ob ich da Details oder eine Teilsumme vorliegen habe?

Hinzu kommt der Raketenhinweis, dass die Struktur der Sätze verschieden ist. Die Teilsummen haben weniger Spalten als die Details.

Mein eingangs genanntes „gelegentliches Gelingen“ könnte man über einen Union lösen - den ich jetzt hinschreibe, aber nicht teste.

SELECT Datum, 'Summe: ' as Bedeutung, SUM(Std) as Std, 0, 0 FROM table1 GROUP BY Datum UNION ALL SELECT a.Datum, ' ', a.Std, m.spalte1, m.spalte2 FROM table1 a JOIN table2 m ON a.id = m.id) t2 ORDER BY Datum, Bedeutung

Ergebnis:

2021-03-01|     |3|..|..|
2021-03-01|     |1|..|..|
2021-03-01|Summe|4|0|0|
2021-03-02|     |2|..|..|...|
2021-03-02|Summe|2|0|0|

Die horizontalen Striche bekommst Du aus einer Query natürlich nicht heraus.

Aber - tu's nicht. Such Dir einen Reportgenerator. Zum Beispiel den - ohne Empfehlung, das war einfach mein erster Treffer beim Suchen.

Rolf

--
sumpsi - posui - obstruxi