Sortierung SQL

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

  • Sortierung SQL

    Hallo Leute,

    ich habe folgende SQL Tabelle.
    Diese soll nach einen bestimmten Schema sortiert werden.

    idcat | preid | postid
    36 | 0 | 37
    37 | 36 | 38
    38 | 37 | 39
    39 | 38 | 40
    40 | 39 | 46
    46 | 40 | 47
    42 | 41 | 43
    43 | 42 | 0
    47 | 46 | 48
    48 | 47 | 49
    49 | 48 | 50
    50 | 49 | 41
    41 | 50 | 42

    postid = die nächste idkat
    preid = die vorherige idkat
    idkat = sind ID der Kategorien

    Also postid ist immer die nächste idcat.

    So soll die Ausgabe sortiert sein:

    idcat | preid | postid
    36 | 0 | 37
    37 | 36 | 38
    38 | 37 | 39
    39 | 38 | 40
    40 | 39 | 46
    46 | 40 | 47
    47 | 46 | 48
    48 | 47 | 49
    49 | 48 | 50
    50 | 49 | 41
    41 | 50 | 42
    42 | 41 | 43
    43 | 42 | 0

    Wer kann mir weiterhelfen, bitte um posting eines PHP Codes, welche diese Sortierung der Ausgabe vornimmt.

    Danke im voraus...
    Kevin

  • #2
    welch übertrieben inkosistentes datenmodell ist denn das? möchtest du eine eigene "reihenfolge" implementieren? hier:

    Code:
    cat_id | my_order 
    ##############
    41, 1
    42, 2
    43, 5
    44, 7
    49, 8
    etc.

    viel einfacher zu pflegen und viel sicherer als so ein overkill (doppelt-verkettete liste in einer rdb, meine güte...)

    Kommentar


    • #3
      die Tabelle Stammt aus dem CMS Contenido.
      Und ich will die Navigation aus dem CMS extrahieren, darum benötige ich diese Lösung.

      Wer kann mir Iher weiterhelfen???Danke, Kevin

      Kommentar


      • #4
        herzliches beileid.. etwas besseres, als die postid-werte abzufragen und danach eine neue query abzuschicken, fällt mir gerade nicht ein, obwohl ich nicht ausschließe, dass es eine nicht unbedingt intuitive lösung mittels geschickter joins gibt.

        Kommentar


        • #5
          und wie wäre dann das Beispiel, sodaß er bei preid=0 mit der Ausgabe anfängt und bei postid=0 audhört und so das alles noch dynamisch bleibt.

          Kommentar


          • #6
            wähle id = 0

            solange(postid!=0){
            push(datensatz)
            wähle id anhand postid
            }

            Kommentar


            • #7
              Original geschrieben von penizillin
              wähle id = 0

              solange(postid!=0){
              push(datensatz)
              wähle id anhand postid
              }
              könntest du das für einen Anfänger genauer ausdrücken
              Danke

              Kommentar


              • #8
                Original geschrieben von shopfinder
                könntest du das für einen Anfänger genauer ausdrücken
                Danke
                Wie wärs wenn du erstmal programmieren lernst?
                Ansonsten lass den Thread nach Projekthilfe schieben -.-

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  hast du die idee dahinter nicht verstanden? du nimmst der ersten eintrag (den mit preid=0).
                  schaust seit postid. nimmst den eintrag, dessen id das ist.
                  schaust seit postid. nimmst den eintrag, dessen id das ist.
                  schaust seit postid. nimmst den eintrag, dessen id das ist.
                  .
                  .
                  .

                  wichtig: nach jedem schritt gucken, ob postid nicht 0 ist (das ist listenende).

                  aber ich nehme an, mit deinem wissensstand wäre es u.u. sinnvoller, die entwickler des systems zu kontaktieren und um support zu bitten.

                  OffTopic:
                  wobei ich pauschalerweise deren kompetenz anzweifeln würde, solange man mir nicht ausdrücklich erklärt, wozu man eine doppeltverkettete liste in einer rdb braucht.

                  Kommentar

                  Lädt...
                  X