Ankündigung

Einklappen
Keine Ankündigung bisher.

Summe in Kombination mit ORDER BY

Einklappen

Neue Werbung 2019

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

  • Summe in Kombination mit ORDER BY

    Hi,
    in dem Screenshot unten wird nach Verkaufstagen sortiert und der Umsatz versch. Geschäfte pro Verkaufstag addiert (kann nur einen Ausschnitt der Auswertung zeigen). Innerhalb einer Query ist das wahrscheinlich nicht möglich?

  • #2
    Was meinst du mit "innerhalb" einer Query?

    Eine Query an die DB absetzen und das Ergebnis mit PHP ausgeben lassen und mittels Gruppenbruch ( https://php-de.github.io/jumpto/gruppenbruch/ ) und Summe je Gruppe (Tag) in PHP ausgeben lassen. So wäre mein erster Gedanke dazu.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Was meinst du mit "innerhalb" einer Query?
      Betonung lag auf "EINER" Abrage. Ich wollte nur sichergehen, dass es nicht möglich ist, diese verschiedenen Summenzeilen der einzelnen über alle Daten innerhalb einer Abfrage hinzu kiregen. Wenn ich mich recht erinnere, gibt es ja eine Möglichkeit, Befehl fällt mir gerade nicht ein, die Summe einer Spalte an eine Query anzuhängen.

      Kommentar


      • #4
        https://www.postgresql.org/docs/deve...-GROUPING-SETS
        http://www.postgresqltutorial.com/po...ndow-function/

        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          akretschmer
          Kann es sein, dass es GROUPING SET in MySql nicht gibt?

          Kommentar


          • #6
            Zitat von phpP Beitrag anzeigen
            akretschmer
            Kann es sein, dass es GROUPING SET in MySql nicht gibt?
            Das kann sein, in MySQL gibt es bekanntlich vieles nicht.
            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

            Kommentar


            • #7
              Zitat von phpP Beitrag anzeigen
              akretschmer
              Kann es sein, dass es GROUPING SET in MySql nicht gibt?
              Zitat von akretschmer Beitrag anzeigen
              Das kann sein, in MySQL gibt es bekanntlich vieles nicht.
              Das war ja mal 'ne echte "Steilvorlage"! Aber so was von!...

              Kommentar


              • #8
                Das war ja mal 'ne echte "Steilvorlage"! Aber so was von!...
                In dem Spiel MySql versus XY hab ich zum Glück keine Aktien . Dann muss ich das wohl über php lösen.

                Kommentar


                • #9
                  Zitat von phpP Beitrag anzeigen
                  In dem Spiel MySql versus XY hab ich zum Glück keine Aktien . Dann muss ich das wohl über php lösen.
                  Ich verstehe auch ehrlich dein Anliegen noch nicht. Du mußt das doch sowieso hinterher mit php zu Code machen, der letztlich als html ausgegeben wird. Mal angenommen, das ist eine Tabelle. Dann folgt deiner Abfrage eine Schleife. Den SQL hast du so geschrieben, daß zumindest nach dem übergeordneten Attribut sortiert wird. Nun kannst du eine sog. "Gruppenstufenverarbeitung" machen, indem du z.B. in der Schleife, die dein Abfrageergebnis ($result oder sowas) durchläuft, so etwas machst:
                  PHP-Code:
                  <?php
                  // ...
                    
                  $kLngFiliale 0;        // diese "Store-Variable" enthält immer den gerade
                                             // gültigen Wert der Spalte FilialeID der DB-Tabelle
                    
                  $DblUmsatzSumme 0;                            

                    
                  // Der Select hieß:
                    // "SELECT FilialeID, FilialeBez, VerkaeuferID, VerkaueferName, Umsatz
                    //  FROM tbl_umsatz WHERE ...ORDER BY FilialeBez, FilialeID;"  

                    
                  while ($row mysqli_fetch_array($result)) {
                      if (
                  $row[0] == $kLngFiliale) {    // $row[0] ist also FilialeID
                        
                  $StrEchoFilNam $row[1];
                        
                  // ...                          // nun wird jedes Element in eine Str-
                        // Variable gesteckt, die nach jedem Schleifendurchlauf zu einer Tabellen-
                        // zeile "zusammengestrickt" wird
                        
                  $DblUmsatzSumme $DblUmsatzSumme row[4];
                        
                  $StrFilNameStore row[1];
                      } else {
                        
                  // hier wird nicht nur die Zeile für Filiale, Verkäufer und Umsatz
                        // wie oben zusammengesetzt, sondern - und das zuerst - die Summen-
                        // Zeile die Verwendet dann nur den Filialnamen und die aufgelaufene
                        // Umsatzsumme
                        
                  $StrEchoFilNam $StrFilNameStore// usw.
                        // ...
                        
                  $StrEchoFilUmsSum $DblUmsatzSumme;    // hier fehlt noch die Konvertierung
                        
                  $DblUmsatzSumme0;          // damit es wieder von vorne losgehen kann.
                                                     // danach kann es dann erst wieder mit dem
                                                     // Bereitstellen der Werte für die Tab.-Zeilen
                                                     // weitergehen:
                        // $StrEchoFilNam = $row[1]; usw. wie oben
                      
                  }      
                        
                  // $StrEchoTab = ... hier wird - erstmal noch INNERHALB des Schleifendurchlaufs
                        // die Zeile zusammengeflickt. DAZU GIBT ES NATÜRLICH TAUSENDE VON ALTERNATIVEN
                        // AM EHESTEN EIN ARRAY, daß keinen HTML-Code enthält
                    
                  }  
                      
                  $rc $StrEchoTabM;
                      return 
                  $rc;    // alternativ wird das Array von der Funktion, die ich hier erstmal "am Werke" sehe
                                          // zurückgegeben
                    // ...
                   
                  ?>
                  (ungetestet einfach mal so runtergeschrieben)

                  Kommentar


                  • #10
                    @Alf2016
                    Ja stimmt, so komme ich auch mit einer Query hin. Mein erster Gedanke war, für jede Gruppe auch eine neue Query machen zu müssen. Danke!

                    Kommentar


                    • #11
                      phpP Genau das meinte ich oben eigentlich auch damit:

                      Zitat von hausl Beitrag anzeigen
                      Eine Query an die DB absetzen und das Ergebnis mit PHP ausgeben lassen und mittels Gruppenbruch ( https://php-de.github.io/jumpto/gruppenbruch/ ) und Summe je Gruppe (Tag) in PHP ausgeben lassen. So wäre mein erster Gedanke dazu.
                      The string "()()" is not palindrom but the String "())(" is.

                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        Zitat von hausl Beitrag anzeigen

                        Genau das meinte ich eigentlich auch damit.
                        Sorry, habe ich überlesen bzw. nicht begriffen, daß "dein" Gruppenbruch nichts anderes meint als mein "Gruppen(stufen)wechsel". Wie der "Wechsel" da rein kommt, keine Ahnung, wahrscheinlich weil das in ABAP so heißt und es dafür innerhalb des Konzepts der "internen Tabellen" sogar "Ereignisse" gibt ("AT LAST", "AT FIRST" usw.) Da "weiß" der letzte Datensatz ein Gruppe bereits, daß er der letzte ist, bevor die Schleife überhaupt zu dem nächsten gekommen ist.

                        Kommentar


                        • #13
                          Alf2016 oh nein, in #11 wollte ich direkt den TE ansprechen. Habs oben ergänzt.
                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar

                          Lädt...
                          X