Monatswerte addiert ausgeben - Haushaltsbuch

TobiasHeuken

Benutzer
Beiträge
8
Hallo zusammen,

ich hätte da mal eine Frage, ob so etwas machbar ist. Ich erstelle gerade via php und mysql eine Art Übersicht über alle Ausgaben von meiner Frau und mir - eine Art Haushaltsbuch.

Tabellenname: kosten

Spalten:
id
wer (Text, Entweder mein Vorname oder der meiner Frau)
datum (date -> jjjj-mm-dd)
was (Text, was wurde ausgegeben)
wo (Text, Name des Händlers, Laden)
gesamt (decimal(9,2) - Gesamtkosten)
kategorie1 (Text, Ausgabekategorie 1)
kategorie2 (Text, Ausgabekategorie 2)
kommentar (Text)

Beispiel-Einträge - nach Spalten siehe oben

499 Tobias 2020-08-15 Zoobesuch ALLWETTERZoo 25.00 Freizeit -
500 Tobias 2020-08-25 Tanken STAR-Tankstelle 32.36 Auto Tanken -
510 Tobias 2020-09-01 Lebensmittel EDEKA 73.23 Lebensmittel - -
520 Tobias 2020-09-10 Lebensmittel LiDL 52.50 Lebensmittel - -


Meine Idee ist es nun, die Monatswerte zu addieren und diese vereinfacht auszugeben

Monat Wer Ausgaben
2020-08 Tobias 57.36
2020-09 Tobias 125.73
usw. usw.

Heißt:
1. Wie kann ich die Datenbank abfragen, dass er mir alle Beträge aus einem Monat addiert? Kann mySQL das aus dem Datum auslesen, oder muss ich jedem Datensatz ein weiteres Feld geben wie Monat -> "2020-08" oder Monat -> "2020-09" ???

2. Wenn 1. machbar ist: muss ich für jeden Monat eine einzelne Abfrage starten? ... oder kann ich das Ganze auch eine große Abfrage zusammenfassen, so dass er mir dann eine Tabelle untereinander ausspuckt?


Ich hoffe, das war verständlich formuliert.

Ich freue mich auf ein Feedback.

LG Tobias
 
Werbung:
Code:
select k.wer, DATE_FORMAT(k.datum, "%Y-%m") as JahrMonat,
       sum(k.gesamt)
  from kosten k
 where datum between k.datum- INTERVAL 6 MONTH and now()
 group by k.wer, DATE_FORMAT(k.datum, "%Y-%m")
 
Holla ... hi dabadepdu,

vielen lieben Dank ... das klappt ... bin gerade sprachlos ... positiv ...

Ich versuche noch die Abfrage zu verstehen ... um sie ggf. umgewandelt auf andere Abfragen anzuwenden; ich arbeite mich durch.


Super !!!

Lieber Gruß, Tobias
 
Werbung:
Das Wichtige im Verständnis ist die Where Bedingung und das Group By.
Nachdem die Menge laut Where gefiltert ist, wird die Gruppierung (Group by) vorgenommen. Dabei wird exakt angegeben, welche Felder gruppiert werden (im Group by) und welche aggregiert werden (in der Select Clause> sum(..))
Alle Felder müssen (sollten) bei Verwendung von Group By entweder gruppiert oder aggregiert werden.*
Das kann alles beliebig erweitert werden, also where .. nur für Tobias oder so oder mehr Felder ins Select, dann muss die Gruppierung angepasst werden.
Wenn Du mit der Formatfunktion für das Datum rumspielst (z.B. Monat rausnehmen und so für das ganze Jahr aggregieren), musst Du immer beide Stellen anpassen.

"sprachlos": SQL ist eine feine Sache und wenn man es verstanden hat, kann man sich sehr viele Dinge ersparen, die man sonst mühsam im Client "zu Fuß" programmiert, also hier in PHP. Wenn Du mehr davon nutzen willst und weniger Probleme möchtest, solltest Du vielleicht eine andere DB
nehmen als mySQL.

*Das Gruppieren ist bei mySQL sehr heikel, weil es falsche SQL Anweisungen nicht erkennt und trotzdem Ergebnisse liefert, falsche!. Wo Du sonst sowas wie "compiler error" bekämst, bekommst Du dann eben Müllantworten. Die obige "Regel" ist eine Vereinfachung, aber passt fast immer.
 
Zurück
Oben