takze urobis to nasledovne:
mam napriklad tabulku kategorie so stlpcami
id_katg, nazov, pid_katg (akoze nadradene ID)
naplnil som si ju datami:
+---------+----------+----------+
| id_katg | nazov | pid_katg |
+---------+----------+----------+
| 1 | auto | NULL |
| 2 | 3 dv | 1 |
| 3 | 5 dv | 1 |
| 4 | hatchbag | 2 |
+---------+----------+----------+
urobil som si pomocnu tabulku vypis, ktora ma totozne 3 polia.
a nakoniec som spravil nasledovnu proceduru:
CREATE PROCEDURE REK_KATG (IN _pid_katg int)
BEGIN
DECLARE _id_katg INT;
DECLARE XCUR CURSOR FOR SELECT id_katg FROM kategoria WHERE pid_katg = _pid_katg;
INSERT INTO VYPIS
SELECT id_katg, nazov, pid_katg FROM kategoria where id_katg = _pid_katg;
OPEN XCUR;
BEGIN
DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END;
LOOP
FETCH XCUR INTO _id_katg;
CALL REK_KATG(_id_katg);
END LOOP;
END;
CLOSE XCUR;
END
ked potom spustis proceduru CALL REK_KATG(1); naplni ti tabulku vypis potrebnymi riadkami. Pred opakovanym spustenim je tabulku vypis potrebne premazat.
samozrejme sa to da robit aj bez premazavania nejakym pomocnym ID volania a pod. Toto je len nacrt, staci si ho upravit podla seba. jednoduchsie to asi nebude.