Kategorien

Kategorien

am 05.03.2007 20:20:00 von m.raupe

Ich habe eine Tabelle Kategorien:

ID,Titel,Haupt_Kategorie.

Es sind im Prinzip unendlich viele Unterkategorien möglich:

1 , "Test" , NULL
2 , "U1.1", 1
3, "U1.2", 1
4 , "U1.2.1", 3

usw.

d.h. Haupt_Kategorie bezeichnet einfach die "Mutter"- Kategorie.

Ich möchte jetzt z.B. wissen, wie die oberste (1.) Kategorie von "U1.2.1"
lautet.
Das wäre also "Test".

kann ich das mit einer einzigen SQL- Abfrage lösen?

Momentan habe ich es so gelöst:

WHILE($row['haupt_kategorie']!='')
$row=Abfrage("SELECT ... WHERE id=$row['haupt_kategorie']);

Am Ende habe ich dann die oberste Kategorie in $row (die Darstellung ist
vielleicht etwas schematisch, aber ich denke es ist klar, was ich meine,
oder?)

Gibt es da eine einfache Lösung, die mit einer SQL- Abfrage zu lösen ist?

LG, Michi

Re: Kategorien

am 06.03.2007 10:33:47 von Johannes Vogel

Hi Michi

michael ra. wrote:
[Klassische Baumstruktur]
> Gibt es da eine einfache Lösung, die mit einer SQL- Abfrage zu lösen ist?

Du interessierst dich für Nested Set Bäume.

Nested Sets – Verschachtelte Bäume mit MySQL
http://www.klempert.de/nested_sets/artikel/

HTH, Johannes

Re: Kategorien

am 07.03.2007 16:10:06 von m.raupe

Danke!

Ist wirklich eine Tolle Sache.

Eine Frage hab ich aber noch dazu:
Wie kann ich alphabetisch sortieren?

Ich habe eine Tabelle
id,lft,rgt,name

Das auslesen funktioniert super, aber die Reihenfolge ist immer so, wie ich
sie eingegeben hab.
also z.B:

--Stmk.
---Graz
-----Lend
-----Gries
--OÖ
-D

Ich habs irgendwie nicht hinbekommen, das alphabetisch zu sortieren...

Die Abfrage:

SELECT n.id,n.name
COUNT(*)-1 AS level
FROM tabelle AS n, tabelle AS p
WHERE n.lft BETWEEN p.lft AND p.rgt
GROUP BY n.lft
ORDER BY n.lft

Hat jemand eine Idee?

LG, Michi


"Johannes Vogel" schrieb im Newsbeitrag
news:2e63e$45ed3573$50da443b$30937@news.hispeed.ch...
> Hi Michi
>
> michael ra. wrote:
> [Klassische Baumstruktur]
>> Gibt es da eine einfache Lösung, die mit einer SQL- Abfrage zu lösen ist?
>
> Du interessierst dich für Nested Set Bäume.
>
> Nested Sets – Verschachtelte Bäume mit MySQL
> http://www.klempert.de/nested_sets/artikel/
>
> HTH, Johannes