Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Firebird - Rekursive SQL mit mehreren "Ebenen"

  Alt 21. Okt 2010, 13:46
Datenbank: Firebird Embedded • Version: 2.1 • Zugriff über: Zeos
Hallo,

ich hatte damals schonmal Hilfe bekommen, weil ich mich mit rekursiven SQL-Abfragen garnicht auskannte. Habe das damalige Problem mit eurer Hilfe auch lösen können, stehe aber wieder vor einen Problem, welches ich auch trotz vieler Versuche nicht gelöst bekomme.

Mein Ziel ist es, in eine Treeview alle Ordner, deren x-beliebige Unterordner und alle Artikel auszulesen, die die Ordner enthalten. Dabei soll alles (Ordnernamen und Artikelnamen) jeweils alphabetisch sortiert werden.

Die SQL-Abfrage für die (Sub-)Ordner in alphabetische Reihenfolge habe ich schon. Es fehlen nur noch die jeweiligen Artikel. Ich würde gerne vermeiden, deswegen eine neue SQL-Abfrage auszuführen - oder wäre dies sinnvoller bzw. die einzige Möglichkeit?

Hier mal die Tabellen und der Quellcode....:

Tabelle für die Ordner "Ablage":

Code:
ID | VATER | ORDNERNAME
Tabelle für die Artikel

Code:
ID | ORDNERID | TITEL
Delphi-Quellcode:
db.sql('WITH RECURSIVE ordner AS ' +
         ' (SELECT * FROM ABLAGE) ' +
         'SELECT * FROM ABLAGE k ' +
         ' LEFT JOIN ordner o ' +
         ' ON (o.id = k.vater) ORDER BY k.vater ASC, k.ordnername ASC');
Vielleicht geht es auch nicht anders, als zwei Statements ausführen zu lassen. Vielleicht habt ihr noch eine Idee. Aber ganz allgemein: Rekursion fällt mir seeehr schwer...

Danke im Voraus
  Mit Zitat antworten Zitat