MySQLにはネイティブ階層クエリのサポートはありません。
トラバースするレベルの数を制限するために、各レベルの結果を取得するクエリを記述し、その結果をUNION ALL
と組み合わせることができます。 オペレーター。
または、より再帰的なアプローチのためにMySQLストアドプログラム(プロシージャ)を作成することもできます。
ネイティブ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
このアプローチは、t4、t5、t6、...に拡張して、いくつかの(合理的な)有限数のレベルにまで拡張できます。
より再帰的なアプローチとして、MySQLストアドプログラム(PROCEDURE)を作成できます。