[MSSQL] SELECT mit Sortierung...

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

  • [MSSQL] SELECT mit Sortierung...

    Hallo alle zusammen,

    Ich habe eine Tabelle in der x Elemente gespeichert sind / werden.
    Nun stehe vor der Frage, wie ich die Elemente auslese und weiter verarbeite.
    Zur besseren Veranschaulichung hier mal meine Test-Tabelle:

    http://gelight.de/tabelle.html

    Es geht beim Auslesen ausschließlich um die hier hervorgehobenen Felder ( Spalten )
    Was möchte ich machen? Am Ende meiner Reise möchte ich die Datensätze möglichst in der Reihenfolge haben, dass man eine Baumdarstellung aller vorhandenen Elemente aufstellen kann. Nun stellt sich für mich die Frage, ob man sich die Daten per MySQL evtl. schon so sortiert zurück geben lassen kann, wie ich sie gern hätte oder ob ich aus Geschwindigkeitsgründen lieber einfach der Reihe nach auslesen lassen sollte und mir über ein paar Funktionen oder Arrays das ganze aufbereite.

    Die Spalte PARENT gibt hier zB. die Ebene an, in der sich das Element befindet. NULL entspricht hier ROOT und die Sortierung innerhalb einer Ebene hängt wieder davon ab, welches Element VOR bzw. NACH dem aktuellen liegt. Hierfür stehen die Spalten PREV und NEXT. Hoffe ihr könnt mir hier folgen.... ist am Ende wie ne Art "Liste". Jedes Element weiß, wo es liegt und wer vor bzw. nach mir kommt.

    Habt ihr da ein paar Tips für mich, falls es mit einem schönen SELECT schon klappen könnte?

    Gruß Mario

  • #2
    Hallo GELight,

    spontan würde mir da ORDER BY einfallen.

    Kommentar


    • #3
      [MSSQL] ORDER BY

      Hi gourmet,

      ORDER BY auf "PARENT" hab ich schon.... hehe
      Das ist nicht das Thema. Ehr, wie ich das ORDER BY so anwende, dass er mir weiterhin alle der aktuellen PARENT ID folgenden Elemente passend zurück gibt.

      Mario

      Kommentar


      • #4
        Code:
        GROUP BY parent ORDER BY parent DESC, prev DESC, next DESC
        so oder so ähnlich vielleicht, ungetestet...

        Kommentar


        • #5
          [MSSQL] GROUP BY

          Hmm... GROUP BY... ich glaub da muss ich erstmal verstehen, was das genau tut.
          Ein erster Test mit deiner Idee oder Variante gibt mir weniger Datensätze zurück als ich in der Tabelle habe.

          Hab selbst dieses GROUP BY noch nie angewandt...

          [EDIT]
          Hab gerade mal geschaut, was GROUP BY so macht.
          Ich glaub das ist in meinem Fall nicht das, was ich grauchen kann, da er doppelte Werte der Spalte zusammenführt. Ich brauche am Ende aber schon alle Datensätze... nur eben Sortiert.

          Mario
          Zuletzt geändert von GELight; 09.08.2008, 15:55.

          Kommentar


          • #6
            Hab gerade mal geschaut, was GROUP BY so macht. Ich glaub das ist in meinem Fall nicht das, was ich grauchen kann, da er doppelte Werte der Spalte zusammenführt. Ich brauche am Ende aber schon alle Datensätze... nur eben Sortiert.
            Dann spars dir und kümmere dich nur um das ORDER BY.

            Kommentar


            • #7
              [MSSQL] ORDER BY

              Ich hab eben nochmal meine Tabelle so sortiert, wie ich sie am Ende brauchen würde.
              Das hier die ID zufällig schön sortiert ist, liegt daran, dass es nur ein paar Testeinträge sind, die ich per Hand angelegt habe. Im Normalfall ist die ID nicht für die Sortierung wesentlich...

              Hier die aktuelle Datei... ( beide Tabellen mit vorher / nachher )
              http://gelight.de/tabelle.html

              Ich denke, dass ich hier wohl nicht alles schön einfach mit einem SELECT und ORDER BY hinbekomme. Oder ich weiß die Tricks nicht...
              Mit dem reinen ORDER BY ( egal, wie ich es anwende ) bekomme ich die Daten nicht so sortiert, wie ich sie brauche.

              Ich denke mal ich sortiere mir die Daten grob vor und muss dann per PHP das ganze aufbereiten. Oder ihr habt noch einen weiteren TIPP für mich..

              Mario

              Kommentar


              • #8
                Das was du da beschreibst, ist auch keine Sortierung...

                Du versuchst eine Hierarchie abzubilden. Dafür brauchst du entweder eine zusätzliche Tabelle (menu_menu), oder eine andere Struktur (nested sets), oder viele zusätzliche Queries...

                Kommentar


                • #9
                  [MSSQL] Struktur

                  Eben.... mir war das schon klar, dass es nicht ausschließlich über ORDER BY gehen kann.
                  Es hätte ja sein können, dass man durch eventuelle innerSelects etc... das ganze lösen kann.
                  Ich werde es aus Geschwindigkeitsgründen so machen, dass ich grundlegend nach PARENT sortiere aber den Rest über PHP regle.

                  Danke dennoch für eure Tipps.

                  Gruß Mario

                  Kommentar

                  Lädt...
                  X