Autor Zpráva
Closure
Profil *
Dobry den,
pouzivam v mySQL takzvanou "closure table" na ukladani stromove struktury dat.
CREATE TABLE `kategorie` (
`id_kategorie` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nazev` varchar(45),
PRIMARY KEY (`id_kategorie`)
);

CREATE TABLE `kategorie_closure` (
`rodic` int(10) unsigned NOT NULL,
`potomek` int(10) unsigned NOT NULL,
`hloubka` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`rodic`,`potomek`)
);

Jakym dotazem/zpusobem dostanu cely strom? Dekuji za kazdou radu.
__construct
Profil
Closure:
Pokiaľ používaš dvojúrovňové menu použi tento dotaz:
SELECT
*
FROM kategorie
JOIN kategorie_closure ON kategorie.id_kategorie = kategorie_closure.potomek
WHERE kategorie_closure.rodic IN (
    SELECT 
        kategorie.id_kategorie
    FROM kategorie
    JOIN kategorie_closure ON kategorie.id_kategorie = kategorie_closure.potomek
    WHERE kategorie_closure.rodic = 0 -- alebo 1 (neviem presné dáta)
    AND kategorie_closure.hloubka = 1
)
ORDER BY kategorie_closure.rodic, kategorie_closure.hloubka
a výpis urob tak ako je tu.
Closure
Profil *
Dekuji, funguje to. Jak mam zostavit dotaz pokud chci "podkategorii v podkategorii"'?? Myslim tim viceurovnove menu..
Kajman_
Profil *
Closure:
V mysql není nativní podpora stromových struktur, proto se doporučuje mít více předpočítaných sloupců, viz. uvedený odkaz.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0