![]() |
AW: Alle Kindeskinder(...) virtueller Ordnerstruktur herausfinden
Vielen Dank für die Antwort. Habe selbst die Lösung "schon" gefunden (war ziemliche Denkerei, zumal mein Hirn bei Rekursionen immer krampft ;))
Aber so konnte ich mich ordentlich einlesen. CTEs sind eig. eine tolle Sache. Hier meine Lösung:
Delphi-Quellcode:
Vielen Dank an alle für die Hilfen!
db.sql('WITH RECURSIVE ordner AS ( ' +
' SELECT * FROM K_KATEGORIEN WHERE id = '+IntToStr(Kategorie.ID)+ ' UNION ALL ' + ' SELECT * FROM K_KATEGORIEN ' + ' JOIN ordner ON K_KATEGORIEN.parent = ordner.id' + ') ' + 'SELECT * FROM ordner'); |
AW: Alle Kindeskinder(...) virtueller Ordnerstruktur herausfinden
Hallo,
ein Problem habe ich doch noch. Ich verwende jetzt folgendes Statement (selbes wie oben, nur ohne WHERE-Condition), um eine TreeView zu füllen. Doch irgendwie sind alle Unterordner 2-mal vorhanden. Die Stammordner betrifft es nicht, nur die Unter(-unter)Ordner. Ein "Group-by" bringt die Fehlermeldung Zitat:
Delphi-Quellcode:
Hoffe, ihr könnt mir helfen.
//Mit o.g. Fehlermeldung
db.SQL('WITH RECURSIVE ordner AS ( ' + ' SELECT * FROM K_KATEGORIEN GROUP BY id'+ ' UNION ALL ' + ' SELECT * FROM K_KATEGORIEN ' + ' JOIN ordner ON K_KATEGORIEN.parent = ordner.id' + ') ' + 'SELECT * FROM ordner'); //Mit o.g. Fehlverhalten (2-Fach-Einträge) db.SQL('WITH RECURSIVE ordner AS ( ' + ' SELECT * FROM K_KATEGORIEN '+ ' UNION ALL ' + ' SELECT * FROM K_KATEGORIEN ' + ' JOIN ordner ON K_KATEGORIEN.parent = ordner.id' + ') ' + 'SELECT * FROM ordner'); Danke im Voraus |
AW: Alle Kindeskinder(...) virtueller Ordnerstruktur herausfinden
Alternativ zu der DB-Struktur welche Ihr gerade nutzt, gibt es noch "Nested Sets".
Bei manchen Aufgabenstellungen eigenen diese sich besser. |
AW: Alle Kindeskinder(...) virtueller Ordnerstruktur herausfinden
Hm... ich kann diese DB-Struktur momentan nicht ändern. Ich bin an sie gebunden.
|
AW: Alle Kindeskinder(...) virtueller Ordnerstruktur herausfinden
Lass mal das ALL beim UNION weg...
SQL-Code:
WITH RECURSIVE ordner AS (
SELECT * FROM k_kategorien UNION SELECT * FROM k_kategorien k INNER JOIN ordner o ON k.parent = o.id ) SELECT * FROM ordner |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz