Re: @CB: Beim Zugriff auf die Daten gruppieren mit Summenbildung - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Olaf Mertgen (263 Beiträge) am Sonntag, 10.März.2002, 12:58. WWW: www.linkex4u.de
    Re: @CB: Beim Zugriff auf die Daten gruppieren mit Summenbildung

      Ja, wenn ich mit SUM arbeite und neben dem zu summierenden Feld noch weitere Felder aufführe, dann müssen die gruppiert werden. D.h. es wird nach übereinstimmenden Werte gruppiert und dafür dann die Summe gebildet.


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Olaf Mertgen (263 Beiträge) am Samstag, 9.März.2002, 17:41. WWW: auto-surf.de
    @CB: Beim Zugriff auf die Daten gruppieren mit Summenbildung

      Hallo Christoph,

      ich hätte da mal wieder ne Frage.

      Ist für die Zukunft eine Möglichkeit geplant, dass ich beim Zugriff auf die Daten summieren und gruppieren kann? Mit SQL kann ich ja sagen:
      SELECT SUM(PUNKTE), USER FROM TABELLE GROUP BY USER

      In baseportal muss ich immer die ganze Tabelle durchlaufen und die Summe manuell bilden. Da ist die SQL-Lösung einfacher.

      Ist da etwas geplant?

      Gruß, Olaf

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Sonntag, 10.März.2002, 02:34.
    Re: @CB: Beim Zugriff auf die Daten gruppieren mit Summenbildung

      Nein, weil die SQL-Datenbank letztendlich genauso die ganze Tabelle durchläuft (irgendwo müssen die Werte ja herkommen), nur dass es das vor Dir in dieser netten "Methode" (oder wie soll man das nennen? ,-) ) SUM "versteckt" - was ich nich sehr glücklich finde, weils da nix zu suchen hat ;-)

      Wenn's Dir wirklich um die Bequemlichkeit geht:

      sub SUM
      {
       my($feld, $db)=@_;
       my $sum=0;
       get "Id==*", $db;
       while(get_next)
       {
        $sum+=$$feld;
       }
       return $sum;
      }
      

      et voilà ;-)

      $summe=SUM("Punkte", "Tabelle");
      

      Was macht das "Group"? Ist das ne Sortierung?

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Sonntag, 10.März.2002, 12:58. WWW: www.linkex4u.de
    Re: @CB: Beim Zugriff auf die Daten gruppieren mit Summenbildung

      Ja, wenn ich mit SUM arbeite und neben dem zu summierenden Feld noch weitere Felder aufführe, dann müssen die gruppiert werden. D.h. es wird nach übereinstimmenden Werte gruppiert und dafür dann die Summe gebildet.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 11.März.2002, 11:38.
    Re: @CB: Beim Zugriff auf die Daten gruppieren mit Summenbildung

      Aha, verstehe. Ich dachte immer, sortieren würde man mit "ORDER" - gibts da einen Unterschied? Wonach würde er sortieren, wenn man "GROUP USER" weglassen würde?

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Montag, 11.März.2002, 15:27. WWW: www.linkex4u.de
    Re: @CB: Beim Zugriff auf die Daten gruppieren mit Summenbildung

      Wenn man das weglassen würde, dann würde das Statement knallen.

      ORDER BY ist die normale Sortierung.

      GROUP BY ist eigentlich keine Sortierung, sondern nur Gruppierung. Wenn ich noch sortieren will, muss ich ORDER BY noch dranhängen.

      Die Gruppierung ist notwendig, da sonst keine Summe pro USER gebildet werden kann. USER ist ein Feldname, das können auch mehrere sein. Das gilt für alle Funktionsaufrufe im Statement, die etwas zeilenübergreifendes machen.

      SELECT COUNT(*), plz, ort FROM adressdaten GROUP BY plz, ort ORDER BY plz

      gibt mir z.B. die Anzahl der Datensätze pro PLZ/Ort-Kombination sortiert nach PLZ.

      Ich bin kein DB-Entwickler, deshalb weiß ich nicht, ob bei der Verwendung von SQL intern auch eine Schleife durchlaufen wird. Der Vorteil gegenüber einer Schleife, in der ich manuell zähle oder summiere, liegt normalerweise darin, dass die Datenbank intern deutlich schneller ist, da die einzelnen Daten nicht übermittelt werden müssen.

      Ich weiß ja nicht genau, wie das bei baseportal ist, die Daten werden zwar nicht übers Internet geliefert, die Schleife läuft ja auf dem Server, aber es muss ja trotzdem jeder Datensatz mit get_next geholt werden.

      Bei Oracle macht es z.B. einen riesigen Unterschied, ob ich mit SUM(*) arbeite, oder eine Stored Proc mit einer zählenden Schleife benutze. Stored Proc ist eine procedure, die in der Datenbank gespeichert. Dabei wird beides direkt auf dem Server ausgeführt und nur das Ergebnis geliefert. Trotzdem ist SUM um ein vielfaches schneller. Wie gesagt, ich kenne mich mit dem Hintergrund nicht so aus, aber ich vermute mal, dass die Zählung einfach viel besser optimiert wird.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 12.März.2002, 22:16.
    Re: @CB: Beim Zugriff auf die Daten gruppieren mit Summenbildung

      Au weia, ist SQL kompliziert ,-)))

      Ja, das mit dem SUM macht schon Sinn, grade wenn Abfrage/Programmierung & Datenbank getrennt sind (bei baseportal ist ja alles eins ;-) ). Aber das Problem ist doch, dass ich dann wieder was zusätzliches lernen muss - aha, es gibt einen SUM-Befehl mit dem ich dieses und jenes kann - ich könnte aber auch ne Stored-Procedure verwenden - oder es selber in meinem Prg. machen... Und alle 3 Sachen verlangen 3 unterschiedliche "Syntaxen" ;-)

      baseportal hat übrigens auch stored procedures (so sind die unterschiedlichen Feldtypen realisiert) ;-)

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 13.März.2002, 00:08. WWW: auto-surf.de
    Re: @CB: Beim Zugriff auf die Daten gruppieren mit Summenbildung

      Naja so kompliziert ist SQL ja auch nicht :-) und es hat alles seine Vor- und Nachteile. Die gesunde Mischung macht's :-)

     Antworten


     
 Liste der Einträge von 49500 bis 49650:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.08s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!