Hierarchische Struktur mit unbekannter Tiefe als SQL-Query?

Hierarchische Struktur mit unbekannter Tiefe als SQL-Query?

am 05.10.2006 10:15:14 von Markus Ernst

Hallo

In meiner Applikation lassen sich bestimmte Dinge wie beispielsweise
Kategorien oder Seiten beliebig verschachteln. Dies habe ich zentral in
einer Tabelle "entitaet" geregelt, etwa so:

Tabelle "entitaet":
| id | parent | publiziert |
+----+--------+------------+
| 4 | 0 | 1 |
| 5 | 4 | 1 |
| 6 | 4 | 1 |
| 7 | 4 | 0 |
| 8 | 6 | 1 |
| 9 | 6 | 1 |
| 10 | 8 | 1 |
usw.

Tabelle "kategorie":
| id | name |
+----+-----------------------+
| 5 | Flugzeuge |
| 6 | Fahrzeuge |
| 7 | Möbel |
| 8 | Zweirädrige Fahrzeuge |
| 9 | Vierrädrige Fahrzeuge |
| 10 | Fahrräder |
usw.

Alle Kind-IDs einer Kategorie zu holen ist einfach:

SELECT k.id
FROM kategorie k
LEFT JOIN entitaet e ON k.id=e.id
WHERE e.parent=4 AND e.publiziert=1
ORDER BY k.name

Nun brauche ich manchmal auch die IDs aller Kinder und Kindes-Kinder. Da
die Tiefe der Verschachtelung nicht bekannt ist, habe ich dies bisher im
PHP gelöst, indem ich durch die Kind-IDs loope und zu jeder wiederum die
Kind-IDs hole, solange das Resultat der Abfrage nicht leer ist. Aber ich
frage mich schon die ganze Zeit, ob sich das nicht auch direkt in der
SQL-Query lösen liesse? (MySQL 4.0 und 4.1)

Für Hinweise oder Anregungen bin ich dankbar!

--
Markus

Re: Hierarchische Struktur mit unbekannter Tiefe als SQL-Query?

am 05.10.2006 10:47:06 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Hierarchische Struktur mit unbekannter Tiefe als SQL-Query?

am 05.10.2006 10:49:13 von Christian Hammers

On 2006-10-05 Markus Ernst wrote:
> In meiner Applikation lassen sich bestimmte Dinge wie beispielsweise=20
> Kategorien oder Seiten beliebig verschachteln.

Entweder hier oder in der allgemeinen Diskussionsliste von lists.mysql.com =
war vor kurzem
erst ein Thread bzgl. der Abbildung von Baumstrukturen in SQL. Ansonsten su=
ch mal nach
"nested set" oder schau hier http://kris.koehntopp.de/artikel/sql-self-refe=
rences/

tschüss,

-christian-

--=20
Christian Hammers WESTEND GmbH | Internet-Business-Provider
Technik CISCO Systems Partner - Authorized Reseller
Lütticher Straße 10 Tel 0241/701333-=
11
ch@westend.com D-52064 Aachen Fax 0241/911879

Re: Hierarchische Struktur mit unbekannter Tiefe als SQL-Query?

am 05.10.2006 12:12:12 von Markus Ernst

Andreas Kretschmer schrieb:
>
> Das war erst vor 1-2 Tagen Thema hier. Hint: erst lesen, dann fragen.

Tatsächlich... ist mir peinlich, danke für den Hinweis.

Re: Hierarchische Struktur mit unbekannter Tiefe als SQL-Query?

am 05.10.2006 12:14:17 von Markus Ernst

Christian Hammers schrieb:
>
> Entweder hier oder in der allgemeinen Diskussionsliste von lists.mysql.com war vor kurzem
> erst ein Thread bzgl. der Abbildung von Baumstrukturen in SQL. Ansonsten such mal nach
> "nested set" oder schau hier http://kris.koehntopp.de/artikel/sql-self-references/

Danke für die Hinweise... ich hätte fragen sollen bevor die Applikation
fertig war!