Non esiste un supporto nativo per le query gerarchiche in MySQL.
Per attraversare un numero finito di livelli, possiamo scrivere query che ottengano risultati per ogni livello e combinare i risultati con un UNION ALL
operatore.
Oppure, possiamo scrivere un programma memorizzato MySQL (procedura) per un approccio più ricorsivo.
Come esempio di approccio utilizzando una query SQL nativa:
SELECT t0.comp_code
FROM tb_corp t0
WHERE t0.mgr_emp_no = 111
UNION ALL
SELECT t1.comp_code
FROM tb_corp t0
JOIN tb_corp t1 ON t1.incharge_comp_code = t0.comp_code
WHERE t0.mgr_emp_no = 111
UNION ALL
SELECT t2.comp_code
FROM tb_corp t0
JOIN tb_corp t1 ON t1.incharge_comp_code = t0.comp_code
JOIN tb_corp t2 ON t2.incharge_comp_code = t1.comp_code
WHERE t0.mgr_emp_no = 111
UNION ALL
SELECT t3.comp_code
FROM tb_corp t0
JOIN tb_corp t1 ON t1.incharge_comp_code = t0.comp_code
JOIN tb_corp t2 ON t2.incharge_comp_code = t1.comp_code
JOIN tb_corp t3 ON t3.incharge_comp_code = t2.comp_code
WHERE t0.mgr_emp_no = 111
ecc. Questo approccio può essere esteso a t4, t5, t6, ... fino a un numero finito (ragionevole) di livelli.
Per un approccio più ricorsivo, è possibile scrivere un programma memorizzato MySQL (PROCEDURE).