MySQL Abfrage mit unterschiedlichen Summen aus einer Spalte

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • kriztan
    antwortet
    Okay, vielen Dank für Dein Feedback

    Einen Kommentar schreiben:


  • pg_user
    antwortet
    Zitat von kriztan Beitrag anzeigen
    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
    Genau so ist es richtig und der normale Weg.

    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:


  • kriztan
    antwortet
    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:


  • pg_user
    antwortet
    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:
    Du willst Zeilen zu Spalten machen. Das geht, erklärt z.B. hier:

    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:

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

    Vielen Dank schon mal...
    Grüße
Lädt...
X