Ankündigung

Einklappen
Keine Ankündigung bisher.

Gesamt- und Subtotale anzeigen

Einklappen

Neue Werbung 2019

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

  • Gesamt- und Subtotale anzeigen

    Hallo zusammen

    Ich hab eine Tabelle mit folgenden Feldern:

    AuftragsID | KundenID | ProduktID | Menge

    Für jeden Auftrag wird ein Datensatz angelegt: Wer hat was in welcher Menge bestellt.

    Nun möchte ich gerne einen Bericht generieren, der mir zeigt,

    - welche Produkte (SELECT ProduktID ... GROUP BY ProduktID)
    - am häufigsten (SELECT ... SUM(Menge) AS Menge ... ORDER BY Menge DESC)
    - und von wem im Einzelnen (SELECT KundenID, Menge ...) GROUP_CONCAT(...)? Subquery?

    gekauft wurden.

    Beispiel-Output:

    Code:
    P_ID - Menge  - Kundenmengen
    ----------------------------
    1230 - 10'000 - A: 2'000, B: 8'000
    1240 -  8'000 - A: 7'000, C: 500, D: 500
    1120 -  6'000 - C: 6'000
    ...
    Wie muss ich die SQL-Anfrage machen?

    Gruss,
    Janosh

  • #2
    SELECT * FROM
    ( SELECT ProduktID, SUM(Menge) AS Menge
    FROM Tabelle
    GROUP BY Menge
    ) AS Chart
    LEFT OUTER JOIN Tabelle
    ON Chart.ProduktID = Tabelle.ProduktID
    ORDER BY Chart.Menge DESC



    Eventuell brauchst noch einen zweiten Subquery statt direktem Join mit Tabelle, um mehrfache Bestellungen eines Kunden zusammenzufassen.

    Kommentar


    • #3
      Danke für die schnelle Antwort.
      Jetzt kommt eine Meldung "Can't group on 'Menge'"
      Genau, ich bräuchte auch die Grupperungen der einzelnen Bestellungen eines Kunden. Wie würde da die Subquery lauten? (ich hab keine Erfahrungen damit)

      Gruss,
      Janosh

      Kommentar


      • #4
        Sorry, "GROUP BY produktID" soll das heissen.


        Code:
        SELECT * FROM 
        ( SELECT ProduktID, SUM(Menge) AS ProduktMenge 
        FROM Tabelle 
        GROUP BY ProduktID 
        ) AS Chart 
        LEFT OUTER JOIN
        ( SELECT ProduktID, KundenID, SUM(Menge) AS KundenMenge
           FROM Tabelle
           GROUP BY ProduktID, KundenID
        ) AS Kunden
        ON Chart.ProduktID = Kunden.ProduktID 
        ORDER BY Chart.Menge DESC

        Kommentar


        • #5
          Vielen Dank, funktioniert super!

          Gruss,
          Janosh

          Kommentar

          Lädt...
          X