SQL Order by abfrage

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

  • SQL Order by abfrage

    Ich habe eine Tabelle, in der Kategorien stehen. Sie sieht ungefähr so aus:

    Code:
    - id - name - level - position - parent
       1   test       0          1        0
       2   test       1          1       10
       4   test       2          1        2
       3   test       0          2        0
       7   test       1          2        3
       8   test       2          2        7
       5   test       0          3        0
       9   test       2          3        7
      10   test       0          4        0
      11   test       0          5        0
      20   test       0          6        0
      21   test       0          7        0
    Nun will ich diese Tabelle ausgeben lassen, und zwar, mit allen unterleveln, beginnd bei level 0.
    D.h. erst kommt id 1, dann - da 1 keine unterkategorie hat, welches durch ein parent einer anderen Zeile festgelegt würde - kommt id 3. Nun folgt eine Unterkategorie, id 7, da ihr parent die aktuelle id ist, und sie in level 1 steht. es folgen id 8 und 9, da sie eine unterkategorie von 7 sind, usw...

    Das ist eine ziemlich heftige struktur, aber es lässt sich jede position eindeutig beschreiben.

    Nunr die Frage: Ich lasse dies zZ über eine Funktion in PHP ausgeben, würde dies aber lieber kompakt in eine SQL abfrage quetschen.
    Ich denke mal, dass es nicht möglich ist, lasse mich aber gerne eines besseren belehren ;-)

    Vielen Dank - McMuh

  • #2
    Re: SQL Order by abfrage

    Original geschrieben von McMuh
    Das ist eine ziemlich heftige struktur, aber es lässt sich jede position eindeutig beschreiben.
    Soll dazu position da sein? Wenn nicht, wozu dann?

    Kommentar


    • #3
      "position" stellt nur die position innerhalb des levels und der parent-id dar. Um es zu verdeutlichen die komplette ausgabe. Die levels werden durch einrücken kenntlich gemacht:

      Code:
      - id -
       E1 E2 E3  = Ebene 1, 2 und 3
        1
        3
           7
              8
              9
        5
       10
           2
              4
       11
       20
       21
      so soll es einfach untereinander weg ausgegeben werden.

      Kommentar

      Lädt...
      X