MySQL Abfrage mit unterschiedlichen Summen aus einer Spalte
Einklappen
X
-
Genau so ist es richtig und der normale Weg.Zitat von kriztan Beitrag anzeigenIch hab es jetzt ganz anders gelöst. Für Interessierte:
Code:SELECT kategorie_name AS Kategorie, Kategorie_ID, SUM(IF(DATE_FORMAT(Datum, '%Y') = '".$jahr."' , Betrag, 0.00)) AS jahr, SUM(IF(DATE_FORMAT(Datum, '%Y') = '".$vorjahr."' , Betrag, 0.00)) AS vorjahr FROM kb_eintrag LEFT JOIN kb_kategorie AS kategorie ON kategorie_ID = kb_eintrag.Kategorie WHERE DATE_FORMAT(Datum, '%Y') >= '".$vorjahr."' and DATE_FORMAT(Datum, '%Y') <='".$jahr."' AND Kategorie > 1 GROUP BY Kategorie_Name
Verbessern könntest bei Bedarf noch das WHERE: Da MySQL keine funktionalen Indexe kennt wird das aufgrund des date_format - rumgehampels als Fulltable-Scan laufen. Also entweder funktionale Indexe, was halt MySQL nicht kann, oder aber es als datum between ... and ... umschreiben.
Einen Kommentar schreiben:
-
Ich hab es jetzt ganz anders gelöst. Für Interessierte:
Code:SELECT kategorie_name AS Kategorie, Kategorie_ID, SUM(IF(DATE_FORMAT(Datum, '%Y') = '".$jahr."' , Betrag, 0.00)) AS jahr, SUM(IF(DATE_FORMAT(Datum, '%Y') = '".$vorjahr."' , Betrag, 0.00)) AS vorjahr FROM kb_eintrag LEFT JOIN kb_kategorie AS kategorie ON kategorie_ID = kb_eintrag.Kategorie WHERE DATE_FORMAT(Datum, '%Y') >= '".$vorjahr."' and DATE_FORMAT(Datum, '%Y') <='".$jahr."' AND Kategorie > 1 GROUP BY Kategorie_Name
Einen Kommentar schreiben:
-
Du willst Zeilen zu Spalten machen. Das geht, erklärt z.B. hier:Zitat von kriztan Beitrag anzeigen
In dieser Tabelle stehen hunderte Einträge aus verschiedenen Jahren. Nun möchte ich daraus eine Aufstellung der Preise/Kosten erstellen, gruppiert nach Kategorie und Jahr und das dann in einer folgenden Tabelle darstellen:
https://www.pg-forum.de/viewtopic.php?f=66&t=4067
Das sollte prinzipiell ähnlich auch in MySQL gehen, beachte aber auch, was da noch so steht.
Einen Kommentar schreiben:
-
MySQL Abfrage mit unterschiedlichen Summen aus einer Spalte
Hallo, ich hoffe mir kann jemand bei meinem Vorhaben auf die Sprünge helfen. Ich habe folgende Tabelle mit diesen Spalten:
Datum | Kategorie_ID | Betreff | Betrag
--------------------------------------
In dieser Tabelle stehen hunderte Einträge aus verschiedenen Jahren. Nun möchte ich daraus eine Aufstellung der Preise/Kosten erstellen, gruppiert nach Kategorie und Jahr und das dann in einer folgenden Tabelle darstellen:
Kategorie_ID | Betrag 2014 | Betrag 2013
----------------------------------------
Soweit bin ich bis jetzt:
Ich hab nun leider gar keine Idee, wie ich jetzt die Daten aus dem Jahr 2013 in dem Query mit verarbeiten und darstellen kann. Dazu kommt, dass eventuell nicht alle Kategorien in den beiden Jahren vorkommen, dann würden doch "Lücken" entstehen, oder?Code:SELECT kategorie_name AS Kategorie, Kategorie_ID, SUM(Betrag) FROM kb_eintrag LEFT JOIN kb_kategorie AS kategorie ON kategorie_ID = kb_eintrag.Kategorie WHERE DATE_FORMAT(Datum, '%Y') = '2014' AND Kategorie > 1 GROUP BY Kategorie_Name
Vielen Dank schon mal...
GrüßeStichworte: -
Einen Kommentar schreiben: