W MySQL nie ma natywnej obsługi zapytań hierarchicznych.
Aby przebyć skończoną liczbę poziomów, możemy napisać zapytania, które uzyskują wynik dla każdego poziomu i połączyć wyniki z UNION ALL
operatora.
Lub możemy napisać program przechowywany w bazie MySQL (procedura) dla bardziej rekurencyjnego podejścia.
Jako przykład podejścia wykorzystującego natywne zapytanie SQL:
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
itp. To podejście można rozszerzyć do t4, t5, t6, ... aż do pewnej (rozsądnej) skończonej liczby poziomów.
Aby uzyskać bardziej rekurencyjne podejście, można napisać program przechowywany w MySQL (PROCEDURA).