swiss cow: Benutzerdefiniertes Filtern und Sortieren

Guten <tag>

Hab da eine (mittlerweile zu grosse) Ausgabe aus einer DB.
diese soll nun vom user gefiltert und sortiert werden können.

Grundsatzfrage:

Löse ich dieses Problem indem ich
a) die SQL-Abfrage durch user-angaben anpasse oder
b) die Ausgegeben Daten weiterverarbeite?

...Vielen Dank für jeden Ratschlag, Hinweis und Denkanstoss!

Liebe Grüsse
swiss cow

  1. Hello,

    Hab da eine (mittlerweile zu grosse) Ausgabe aus einer DB.
    diese soll nun vom user gefiltert und sortiert werden können.

    Grundsatzfrage:

    Löse ich dieses Problem indem ich
    a) die SQL-Abfrage durch user-angaben anpasse oder
    b) die Ausgegeben Daten weiterverarbeite?

    Du kannst von mir einen Rat haben, aber keine Schläge...
    Bitte benutze den Rat aber nur dazu, um selber eigene Ideen zu entwicklen!

    Grundsätzlich sollte man im Zusammenspiel mit Datenbanken Ergebnismengen sowohl in der Horizontalen wie auch in der Vertikalen so klein wie möglich halten, nur so groß, wie nötig.

    Wenn Du also z.B. mit PHP als API Abfragen in RDBMS mit Gruppenbildung machst, ist es manchmal besser, aus einer SQL-Abfrage zwei zu machen, weil die Gesamtzeichenzahl der vereinigten Ergenismenge dann immens schrumpfen kann.

    Für Deinen Fall würde das also bedeuten, eventuell das Satzformat anzupassen, um z.B. einen OWNER in den Datenatz aufzunehmen. Dann kannst Du dem User genau die Datensätze zur Verfügung stellen, die er bearbeiten darf.

    Das Weiterverarbeiten in der API (der darstellenden Schicht) lohnt sich immer dann, wenn man, wie schon erwähnt, dadurch redundante Datenübertragung vermeiden kann, also hauptsächlich beim Merge (Mischen von Daten).

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  2. Mahlzeit,

    Löse ich dieses Problem indem ich
    a) die SQL-Abfrage durch user-angaben anpasse oder
    b) die Ausgegeben Daten weiterverarbeite?

    a)

    IMMER!

    Sonst schiebst du überflüssige Datenmengen vom DBMS zum Webserver und lässt PHP mit diesen zu großen Datenmengen hantieren, die das DBMS (meistens) viel schneller, eleganter und zuverlässiger vorher verkleinern könnte.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hello,

      Löse ich dieses Problem indem ich
      a) die SQL-Abfrage durch user-angaben anpasse oder
      b) die Ausgegeben Daten weiterverarbeite?

      a)

      IMMER!

      Sonst schiebst du überflüssige Datenmengen vom DBMS zum Webserver und lässt PHP mit diesen zu großen Datenmengen hantieren, die das DBMS (meistens) viel schneller, eleganter und zuverlässiger vorher verkleinern könnte.

      Nein, nicht immer. Das Mischen von Daten sollte man immer der darstellenden Schicht überlassen, wenn durch die Aufteilung auf zwei Abfragen nicht Zeitlückenprobleme entstehen.

      Die kann man aber meistens durch ein intelligentes Design und richtige Abfolge der benötigten Abfragen ausschließen, auch ganz ohne Locks.

      Grundsätzlich sollte eine Gruppe ja auch erst dann gelöscht werden, wenn es kein Mitglied mehr gibt.
      Trotzdem könnten sich bei Multiuser-Umgebungen Überschneidungen ergeben.

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      1. Mahlzeit,

        Sonst schiebst du überflüssige Datenmengen vom DBMS zum Webserver und lässt PHP mit diesen zu großen Datenmengen hantieren, die das DBMS (meistens) viel schneller, eleganter und zuverlässiger vorher verkleinern könnte.

        Nein, nicht immer.

        Doch.

        Daten, die ich eh nicht anzeigen will und die ich - sollte das DBMS sie der Skriptsprache liefern - eh dort "herausfiltern" oder umsortieren würde, lassen sich meistens schneller, eleganter und zuverlässiger gleich im DBMS bereitstellen (mittels WHERE, GROUP BY, ORDER BY usw.).

        Und wenn ich swiss_cow richtig verstanden habe, ging es darum - und nicht um das Zusammenführen von Datenmengen aus unterschiedlichen Quellen ...

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hallo

          Daten, die ich eh nicht anzeigen will und die ich - sollte das DBMS sie der Skriptsprache liefern - eh dort "herausfiltern" oder umsortieren würde, lassen sich meistens schneller, eleganter und zuverlässiger gleich im DBMS bereitstellen (mittels WHERE, GROUP BY, ORDER BY usw.).

          insbesondere wenn man daran denkt, dass beim nächsten Request (Sortieren, Filtern) die Daten erneut abgerufen werden müssen - PHP hat sie ja nicht mehr.

          Eine Alternative wäre übrigens clientseitiges Sortieren oder Filtern über Javascript, was bis zu einer gewissen Datenmenge in akzeptabler Zeit machbar sein sollte - Fallback natürlich wieder die DB.

          Freundliche Grüße

          Vinzenz

          1. Hello,

            Eine Alternative wäre übrigens clientseitiges Sortieren oder Filtern über Javascript, was bis zu einer gewissen Datenmenge in akzeptabler Zeit machbar sein sollte - Fallback natürlich wieder die DB.

            *ähh*
            ich sprach nicht von Client oder DBMS, sondern von DBMS oder API

            Die "darstellende Schicht" ist für mich nicht derjenige, der das Bild anzeigt, sondern derjenige, der es logisch und inhaltlich aufbaut, also PHP und eine MySQL-Funktionen.

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        2. Hello,

          Nein, nicht immer.

          Doch.

          Daten, die ich eh nicht anzeigen will und die ich - sollte das DBMS sie der Skriptsprache liefern - eh dort "herausfiltern" oder umsortieren würde, lassen sich meistens schneller, eleganter und zuverlässiger gleich im DBMS bereitstellen (mittels WHERE, GROUP BY, ORDER BY usw.).

          --------
          Nein!

          Ja für eine Verwendung von "Group by" über die ID der Gruppe, aber NEIN für das Beifügen der Gruppeneigenschaften, die nachher in der Darstellung jeweils nur einmal pro Gruppe als Überschrift oder Gruppenheader erscheinen sollen.

          Die müssen nicht in jedem Datensatz der Ergebnismenge explizit aufgeführt werden.

          Nun bist Du wieder dran...

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          1. Mahlzeit,

            Ja für eine Verwendung von "Group by" über die ID der Gruppe, aber NEIN für das Beifügen der Gruppeneigenschaften, die nachher in der Darstellung jeweils nur einmal pro Gruppe als Überschrift oder Gruppenheader erscheinen sollen.

            "Beifügen von Gruppeneigenschaften"? Ich verstehe bei aller Liebe nicht, was Du überhaupt meinst. Zur Erinnerung, von was ICH spreche, nochmal ein Zitat aus dem ursprünglichen Beitrag von swiss_cow:

            Hab da eine (mittlerweile zu grosse) Ausgabe aus einer DB.
            diese soll nun vom user gefiltert und sortiert werden können.

            Und genau DAFÜR (nach bestimmten Kriterien filtern und/oder das Ergebnis nach bestimmten Kriterien sortieren) ist es absolut unsinnig, irgendeine Skriptsprache zu bemühen, da jedes DBMS das schneller, eleganter und zuverlässiger kann.

            Die müssen nicht in jedem Datensatz der Ergebnismenge explizit aufgeführt werden.

            Davon hat doch auch niemand gesprochen?! Es ging doch nur darum, eine bestimmte Datenmenge je nach Benutzereingabe zu filtern und/oder zu sortieren.

            Nun bist Du wieder dran...

            Und ich weiß immer noch nicht, von was du sprichst ...

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Hello,

              Davon hat doch auch niemand gesprochen?!

              Doch!

              Ich habe davon gesprochen und verstehe daher auch nicht, was Du daran herumzumäkeln hast, wenn Du doch  nach eigener Aussage etwas ganz anderes beitragen wolltest.

              Ich bin nur auf den Teil Deiner Aussage "Group By" eingegangen, da der auch meinen Beitrag berührt hat. Bei "Group By" kann man in der Praxis meistens durch Teilung der Abfrage in zwei Teilabfragen sehr viel redundante Daten vermeiden. Man muss nicht jeden Satz der Egebnismenge mit den Eigenschaften der Gruppe anreichern.

              Ich werde auf Wunsch gerne noch mal zwei bis vier Screenshots von Beispielen machen und dauerhaft für das Archiv auch auf meinem Webspace bereithalten. Dafür muss ich nur erst ein paar plausible Musterdaten erfassen, damit es für jeden Anwender ersichtlich wird, was gemeint ist.

              Vermutlich wirst Du dann sagen "ach ja, DAS ist doch klar" ...

              Aber soviel Zeit musst Du mir bitte schon geben.
              Nebenbei habe ich auch noch einen Arsch, den ich an die Wand bringen muss - täglich.

              Aber heute Nacht, wenn ich wieder nicht schlafen kann, denke ich dran und baue die Muster.

              Harzliche Grüße vom Berg
              http://bergpost.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

              1. Mahlzeit,

                Davon hat doch auch niemand gesprochen?!

                Doch!

                Ich habe davon gesprochen und verstehe daher auch nicht, was Du daran herumzumäkeln hast, wenn Du doch  nach eigener Aussage etwas ganz anderes beitragen wolltest.

                Ähm. Moment mal. DU hast auf MEINEN Beitrag geantwortet. Wobei MEINE Aussage, dass eine Filterung bzw. Sortierung (und um nichts anderes ging es in der Frage des OP, dort wurde in keinster Weise von Gruppierung, Zusammenführung unterschiedlicher Daten aus unterschiedlichen Quellen o.ä. gesprochen) großer Ergebnismengen von Datenbankabfragen IMMER sinnvollerweise im DBMS erfolgen sollte, um nicht überflüssige Daten von dort zur verarbeitenden Skriptsprache zu schieben bzw. die Skriptsprache Arbeiten erledigen zu lassen, die das DBMS schneller und besser kann, absolut korrekt ist. Wenn nicht, beweise mir das Gegenteil.

                Ansonsten betrachte ich diesen - IMHO absolut überflüssigen - Threadzweig hiermit als abgeschlossen.

                Aber heute Nacht, wenn ich wieder nicht schlafen kann, denke ich dran und baue die Muster.

                Tu, was Du nicht lassen kannst. :-)

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Hello,

                  Ansonsten betrachte ich diesen - IMHO absolut überflüssigen - Threadzweig hiermit als abgeschlossen.
                  Tu, was Du nicht lassen kannst. :-)

                  Ich halte Dein Posting für reichlich unverschämt.

                  Nur, weil hier einige der Moderatoren momentan keine gleichwertigen Partner zur Auseinandersetzung mehr haben (weil die u.a. durch die lange Forumsschließung abgewandert sind) und nun mich gelgentlich als Nächsten auf ihre Liste für billige Profilierung gesetzt haben (sorry, so kommt mir das manchmal vor), muss das nicht jeder Hans und Franz nachmachen.

                  Von Vinzenz, Christian, Dedlfix, Sven und einigen Anderen lasse ich mir das auch gerne gefallen, denn meistens bringen die Threads das Thema dann doch nochmal so weit auf den Punkt, dass selbet ich die Fehler verstehe ;-)), aber das lässt dann auch fundierte Hintergundarbeit erkennen. Und ich mache mich gerne zum Affen, wenn es für das Archiv dadurch einen Wert gewinnt.

                  Du bist aber noch weit davon entfernt, dass ich mir das gefallen lassen werde.

                  Ich hoffe, dass Du das in Zukunft berücksichtigen wirst, damit der notwendige Respekt voreinander nicht weiter leidet.

                  Eine Diskussion zum Thema ist solange sinnvoll, wie sie dem Thema neue Ideen zuführt. Die Erweiterung des Denkbereiches kann niemals verkehrt sein, auch wenn sie manchmal leider in die nächte Potenz führt.

                  Harzliche Grüße vom Berg
                  http://bergpost.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                  1. Mahlzeit,

                    Ansonsten betrachte ich diesen - IMHO absolut überflüssigen - Threadzweig hiermit als abgeschlossen.
                    Tu, was Du nicht lassen kannst. :-)

                    Ich halte Dein Posting für reichlich unverschämt.

                    Und ich halte weiterhin Deine Postings in diesem Threadzweig für überflüssig. Nämlich deshalb, weil es in der Frage des OP nie um das "Mischen" oder "Zusammenführen" von Daten ging, sondern nur um das Filtern und Sortieren einer bestimmten, relativ großen Ergebnismenge. Und was das beides betrifft, halte ich meine Aussage, dass man das sinnvollerweise immer vom DBMS erledigen lassen sollte, immer noch für richtig. Und ich habe von Dir auch noch keine Argumente gelesen, die das widerlegen.

                    Nur, weil hier einige der Moderatoren momentan keine gleichwertigen Partner zur Auseinandersetzung mehr haben (weil die u.a. durch die lange Forumsschließung abgewandert sind) und nun mich gelgentlich als Nächsten auf ihre Liste für billige Profilierung gesetzt haben (sorry, so kommt mir das manchmal vor), muss das nicht jeder Hans und Franz nachmachen.

                    Ich habe nicht vor, mich auf Deine oder anderer Leute Kosten zu profilieren. Es ist nur so, dass Du meine absolut korrekte Antwort auf die Frage des OP bezweifelt hast, indem du vom Thema bzw. der Fragestellung abgeschweift bist. Das finde ich nicht in Ordnung und darauf wollte ich hinweisen bzw. das zum Ausdruck bringen.

                    Von Vinzenz, Christian, Dedlfix, Sven und einigen Anderen lasse ich mir das auch gerne gefallen, denn meistens bringen die Threads das Thema dann doch nochmal so weit auf den Punkt, dass selbet ich die Fehler verstehe ;-)), aber das lässt dann auch fundierte Hintergundarbeit erkennen. Und ich mache mich gerne zum Affen, wenn es für das Archiv dadurch einen Wert gewinnt.

                    Was ist an meinen Aussagen falsch?

                    Du bist aber noch weit davon entfernt, dass ich mir das gefallen lassen werde.

                    Ich habe dich nicht zum Affen gemacht. Ich finde es lediglich nicht in Ordnung, dass du meine absolut korrekte Aussage in Frage stellst, indem du Problemstellungen, die mit der Frage des OP nichts zu tun hatten, benutzt, um vom Thema abzuschweifen.

                    Ich hoffe, dass Du das in Zukunft berücksichtigen wirst, damit der notwendige Respekt voreinander nicht weiter leidet.

                    Ich habe nie keinen Respekt vor Dir gehabt. Ich finde lediglich, dass Deine Beiträge in diesem Threadzweig nichts mit der Fragestellung des OP zu tun haben.

                    Eine Diskussion zum Thema ist solange sinnvoll, wie sie dem Thema neue Ideen zuführt. Die Erweiterung des Denkbereiches kann niemals verkehrt sein, auch wenn sie manchmal leider in die nächte Potenz führt.

                    Was hat das mit der Fragestellung des OP zu tun? Und soll ich die Floskel mit der "Erweiterung des Denkbereichs" jetzt als Beleidigung auffassen oder lieber nicht?

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|