Zadejte hledaný výraz...

Vnořené kategorie – SQL rekurze

cc
verified
rating uzivatele
(11 hodnocení)
19. 2. 2013 11:09:36
Dobré ráno vespolek,
potřebuju poradit s rekurzivním sql dotazem (jde mi o neomezené zanoření ... no počítám max. 5-8 ... ale člověk nikdy neví)
mam tabulku
kategorie
ID --- title --- parent
1 --- hlavni --- '-1'
2 --- prvni --- 1
3 --- druha --- 2
4 --- treti --- 3
atd...
pokud je parent='-1' jedná se o hlavní kategorii, a jakákoliv vnořená kategorie bude mít jako parent ID své nadřazené kategorie
poradíte prosím jak s co nejmenším počtem dotazů se dostat na "domovskou" kategorii.
Díky
Michal
19. 2. 2013 11:09:36
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868325
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
19. 2. 2013 11:12:59
Z databáze to vytáhněte celé jedním selectem a seskládejte až v php. Ideálně zvolte jinou strukturu toho stromu, aby jste rekurzi použít nemusel.
19. 2. 2013 11:12:59
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868324
cc
verified
rating uzivatele
(11 hodnocení)
19. 2. 2013 11:35:36
Napsal Jan Stejskal;911738
Z databáze to vytáhněte celé jedním selectem a seskládejte až v php. Ideálně zvolte jinou strukturu toho stromu, aby jste rekurzi použít nemusel.
Vytvořil by jsi mi malý příklad? Řeším to aktuálně a potřebuji to rychle překonat.
Rád pošlu i peníze za tvůj čas. Nejlépe kdyby jsi to měl už někde aplikováno.
Díky.
19. 2. 2013 11:35:36
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868323
Milan Šťovíček
verified
rating uzivatele
19. 2. 2013 11:37:51
Zvolil bych datovou strukturu Strom. Vizte http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/
Kořen by pak měl být prvek s nejmenším left takový, který má left menší a right větší než vypisovaný prvek.
19. 2. 2013 11:37:51
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868322
martinzsa
verified
rating uzivatele
(1 hodnocení)
19. 2. 2013 11:48:06
preco nepouzit rekurziu ? je to to najidealnejsie riesenie co moze byt a vyskladas nim cokolvek bez ohladu kolko poloziek a podkategorii mas...
Napsal Jan Stejskal;911738
Z databáze to vytáhněte celé jedním selectem a seskládejte až v php. Ideálně zvolte jinou strukturu toho stromu, aby jste rekurzi použít nemusel.
19. 2. 2013 11:48:06
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868321
Registrace
verified
rating uzivatele
(1 hodnocení)
19. 2. 2013 11:56:12
Rozhodně použij rekurzivní dotaz, místo nesmyslnýho patlání se skládáním v PHP, apod,...
Pochopil jsem, že potřbuješ získat "nejvyššího rodiče" od záznamu - tak to koukni tady: http://stackoverflow.com/questions/9211173/sql-top-parent-record-in-hierarchy
Za doporučování těch hovadin typu left, right, nebo skládání v php bych vraždil, není blbějších způsobů, leč bohužel často nutných kvůli tomu že se všude protlačuje MySQL, který rekurzivní dotazy neumí. Pokud člověk ví že bude potřebovat hierarchickou strukturu, tak ruce pryč od MySQL.
19. 2. 2013 11:56:12
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868320
Asi nejjednodušší je http://php.vrana.cz/traverzovani-kolem-stromu-prakticky.php.
Pak můžeš použít algoritmizaci a vykreslit si strom:
1) vykresli kořen
2) vykresli levej list
3) vykresli pravý list
... není to přesně napsané ale najdi si tuhle myšlenku na google nebo přímo základy algoritmizace.
19. 2. 2013 12:44:49
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868319
cc
verified
rating uzivatele
(11 hodnocení)
19. 2. 2013 13:16:57
Napsal tomas86;911799
Asi nejjednodušší je http://php.vrana.cz/traverzovani-kolem-stromu-prakticky.php.
Pak můžeš použít algoritmizaci a vykreslit si strom:
1) vykresli kořen
2) vykresli levej list
3) vykresli pravý list
... není to přesně napsané ale najdi si tuhle myšlenku na google nebo přímo základy algoritmizace.
I to mě připadá zbytečně složité. Zadal jsem to kamarádovi, prý to jde ještě jednodušeji, pak sem nahodím řešení. Ale klidně mi ještě pište nějaké nápady, jedině dobře.
19. 2. 2013 13:16:57
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868318
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
19. 2. 2013 15:02:32
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868317
cc
verified
rating uzivatele
(11 hodnocení)
19. 2. 2013 18:41:53
Napsal cmelo;911931
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
To vypadá na parádní návod, díky za zaslání. Projedu to :)
19. 2. 2013 18:41:53
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868316
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
20. 2. 2013 00:14:18
Napsal martinzsa;911762
preco nepouzit rekurziu ? je to to najidealnejsie riesenie co moze byt a vyskladas nim cokolvek bez ohladu kolko poloziek a podkategorii mas...
Mysql rekurze neumí. Rekurze v PHP je jedno z nejhorších (nejpomalejších) řešení.
---------- Příspěvek doplněn 20.02.2013 v 00:15 ----------
Napsal Registrace;911769
Rozhodně použij rekurzivní dotaz, místo nesmyslnýho patlání se skládáním v PHP, apod,...
Pochopil jsem, že potřbuješ získat "nejvyššího rodiče" od záznamu - tak to koukni tady: http://stackoverflow.com/questions/9211173/sql-top-parent-record-in-hierarchy
Za doporučování těch hovadin typu left, right, nebo skládání v php bych vraždil, není blbějších způsobů, leč bohužel často nutných kvůli tomu že se všude protlačuje MySQL, který rekurzivní dotazy neumí. Pokud člověk ví že bude potřebovat hierarchickou strukturu, tak ruce pryč od MySQL.
Většina hostingů má pouze mysql, kde rekurze použít nejde. Proto není co jiného doporučit, než jiný typ struktury dat.
20. 2. 2013 00:14:18
https://webtrh.cz/diskuse/vnorene-kategorie-sql-rekurze#reply868315
Pro odpověď se přihlašte.
Přihlásit