Autor | Zpráva | ||
---|---|---|---|
Ivorius Profil |
#1 · Zasláno: 18. 10. 2008, 12:29:04
Potřeboval bych pomoc, chtěl bych jednoduše vypsat menu, kde bude otevřená vždy ta větev kategorie, ve které se právě nacházím.
Př. - kategorie 1 - kategorie 2 - kategorie 3 -- kategorie 3a -- kategorie 3b - tady jsem -- kategorie 3b I -- kategorie 3b II -- kategorie 3c - kategorie 4 Napadlo mě si jedním selectem naházet do pole posloupnost k té kategorii, druhým selectem všechny kategorie do dalšího pole a pak jen při výpisu porovnávat a vypisovat. Nebo víte někdo o nějakém lepším řešení? |
||
imploder Profil |
#2 · Zasláno: 18. 10. 2008, 12:58:55
Takové obyčené řešení je tabulka
id | id_nadrazene | nazev obsah určité kategorie pak vypíšeš SELECT * WHERE id_nadrazene='xxx' Asi existují i jiné metody, na Intervalu je tuším nějaký článek o traverzování okolo stromu. |
||
Ivorius Profil |
#3 · Zasláno: 18. 10. 2008, 13:01:47
Díky za ochotu, ale jak jsem psal, používám traverzování namísto rekurze.
|
||
imploder Profil |
#4 · Zasláno: 18. 10. 2008, 13:04:37
|
||
Ivorius Profil |
#5 · Zasláno: 18. 10. 2008, 13:26:44
:) jj to znám, z toho (a zaachiho série) jsem původně vycházel a i se ptal, nicméně to neřeší můj dotaz.
|
||
BetaCam Profil |
#6 · Zasláno: 19. 10. 2008, 09:34:06 · Upravil/a: BetaCam
Ivorius
Nejsem si tim ted jistej a hlavně to nemám kde vyzkoušel, ale mohlo by fungovat něco jako SELECT * FROM tabulka WHERE (lft <= X AND rgt >= Y) OR parent_id in(SELECT parent_id FROM tabulka WHERE lft <= X AND rgt >= Y) order by lft za předpokladu, že znáš lft a rgt prvku kde se nacházíš. |
||
Časová prodleva: 15 let
|
0