• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

SQL-Abfrage gesucht

Status
Für weitere Antworten geschlossen.
E

Efchen

Guest
Moin,

stellt Euch eine Tabelle vor mit den Spalten "id", "parent" und "text".
In der Tabelle ist eine Struktur hinterlegt, ähnlich der eines Menüs. Es gibt übergebordnete Einträge mit "parent=0". Deren Kinder haben als "parent" die "id" ihrer Eltern. Also z.B.
Code:
id=1 parent=0 A
id=2 parent=0 B
id=3 parent=1 C
id=4 parent=3 D
id=5 parent=2 E
Ergibt:
Code:
A
+--C
   +--D
B
+--E

Wie muss die dazugehörige SQL-Abfrage aussehen, um die Einträge in die richtige Reihenfolge (s.o.: ACDBE) zu bringen?

Danke für jede Erleuchtung :-)
 
Diesen Fall gibt es doch meist bei Menüs auf Datenbank-Basis? Das kannst Du nur über mehrere SQL-Statements lösen.

Das Statement für die oberste Ebene:

Code:
SELECT id, text FROM tabelle WHERE parent = '0' ORDER BY text

Die Ergebnisse davon lässt Du ausgeben und innerhalb dieser Ergebniszeile das nächste Statement nutzen um die innerhalb der obersten Ebene vorhandenen Unterpunkte zu erhalten (hier mit einer PHP-Variable als Beispiel):

Code:
SELECT id, text FROM tabelle WHERE parent = '".$row['id']."' ORDER BY text

Dieses Statement kannst Du dann immer wieder verwenden je tiefer du in den ebenen gehst.
 
Ja okay, das wäre dann kein Problem. Ich dachte nur, da gibts vielleicht eine Möglichkeit, das über ein select zu lösen. Mit den ganzen unions und left und right joins kenn ich mich nämlich noch nicht übermäßig aus.

Dann nehm ich die rekursive Lösung.

Danke :-)
-Efchen
 
Klar, die zweite Lösung wäre der simple Weg:

Code:
SELECT id, text, parent FROM tabelle ORDER BY text

.. und dann bei der Ausgabe rekursiv arbeiten.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben