Ankündigung

Einklappen
Keine Ankündigung bisher.

Gruppensumme bez. Gruppenname oberhalb der Detaildatensätze

Einklappen

Neue Werbung 2019

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

  • Gruppensumme bez. Gruppenname oberhalb der Detaildatensätze

    Hallo Community,

    in Access oder Crystal Reports ist relativ einfach möglich ein Gruppensummen oder den Gruppennamen oberhalb der Detaildatensätze einzufügen.

    Wie kann ich das mittels PHP erreichen bzw. wie wird das in den oben genannten Programmen durchgeführt?

    Geht dies nur in dem ich für jede Gruppierungsebene einen eigenen Select absetze (GROUP BY) oder lässt sich dies auch mit PHP-Funktionen erreichen.

    Sollte dies besser zum Thema Datenbanken passen, dann sorry und bitte Beitrag verschieben.

    Besten Dank im vorraus für die Hilfe.


  • #2
    Zitat von Steinadler Beitrag anzeigen
    Wie kann ich das mittels PHP erreichen
    Gruppenbruch (Standardverfahren) - PHP.de Wiki

    Geht dies nur in dem ich für jede Gruppierungsebene einen eigenen Select absetze (GROUP BY) oder lässt sich dies auch mit PHP-Funktionen erreichen.
    Ich bin mir nicht ganz sicher, in welche Richtung die Frage jetzt abzielt.

    Wenn es dir um die Ermittlung der Gruppensumme geht, dann schau dir den GROUP BY-Modifier WITH ROLLUP an.

    Kommentar


    • #3
      Danke Chris für deine rasche Antwort.
      Der "Gruppenbruch" gefällt mir ganz gut.
      Muss ich hier um eine Summe eines Float-Feldes zu bilden das Array zwei mal durchlaufen. Einmal um die Summe zu bilden und auszugeben und das zweitemal um die Datensätze ausgeben?

      Vielleicht hilft das Beispieil hier weiter was ich möchte.

      Beispiel Datensätze

      KundNr|Kunde|Bestellung|Preis|
      1 |Huber|3003 |30 |
      1 |Huber|3004 |90 |
      2 |Maier |3005 |20 |
      1 |Huber|3006 |30 |
      2 |Maier|3007 |10 |
      3 |Müller|3010 |30 |
      3 |Müller|3013 |50 |


      Ausgabe:

      Gesamtsumme: 260 €

      1 Huber Summe: 150 €
      1 |Huber|3003 |30 |
      1 |Huber|3004 |90 |
      1 |Huber|3006 |30 |

      2 Maier Summe: 30 €
      2 |Maier |3005 |20 |
      2 |Maier|3007 |10 |

      3 Müller Summe: 80 €
      3 |Müller|3010 |30 |
      3 |Müller|3013 |50 |

      Das mit dem "GROUP BY WITH ROLLUP" hört sich auch nicht schlecht an. Nur wie lese ich dann am besten das damit gebildete Array aus damit sich obengenannten Beispiel ergibt?

      Kommentar


      • #4
        Zitat von Steinadler Beitrag anzeigen
        Muss ich hier um eine Summe eines Float-Feldes zu bilden das Array zwei mal durchlaufen. Einmal um die Summe zu bilden und auszugeben und das zweitemal um die Datensätze ausgeben?
        Nein, musst du nicht.

        Natürlich musst du die betreffenden Datensätze erst mal bis zum letzten durchlaufen, um die Summe zu bilden. Aber du musst die Ausgabe der Datensätze ja nicht gleich per echo rausfeuern, sondern kannst sie erst mal in einer Variablen sammeln.

        Pseudocode:
        PHP-Code:
        $teilOutput .= 'blah blubb '.$aktuellerDatensatz['wertXY'].'...';
        $summe += $aktuellerDatensatz['wertABC'];

        // und dann, am Ende der Bearbeitung der jeweiligen Gruppe:
        $gesamtOutput .= $summe.$teilOutput// „dreht“ die Reihenfolge, in der Summe und Datensätze ausgeben werden,
                                             // ganz simpel um 
        Das mit dem "GROUP BY WITH ROLLUP" hört sich auch nicht schlecht an. Nur wie lese ich dann am besten das damit gebildete Array aus damit sich obengenannten Beispiel ergibt?
        Wie die Datensätze aussehen, die dir das liefert, kannst du am Beispiel auf der Seite nachvollziehen.

        Etwas weiter unten steht, dass man bei WITH ROLLUP leider kein ORDER BY mehr nutzen kann, nur GROUP BY mit ASC/DESC als Pseudo-Sortierung einsetzen kann - aber auch mit der Einschränkung, “The higher-level summary rows added by ROLLUP still appear after the rows from which they are calculated, regardless of the sort order.”

        Vermutlich also doch günstiger, das gleich in PHP zu machen.

        Kommentar


        • #5
          Danke Chris, werd' ich morgen früh gleich ausprobieren und Bescheid geben, wie es bei mir damit geklappt hat.

          LG

          Kommentar


          • #6
            Nochmals Danke Chris.

            Hab's heute so ausprobiert und es hat funktioniert.

            Gibt es dafür eine frei verfügbare Klasse oder Funktion zum Download?

            LG

            Kommentar

            Lädt...
            X