sql >> Base de Datos >  >> RDS >> Mysql

Consulta jerárquica en MySQL. (conectar por equivalente para MySQL)

MySQL no admite consultas jerárquicas nativas.

Para atravesar un número finito de niveles, podemos escribir consultas que obtengan resultados para cada nivel y combinar los resultados con UNION ALL operador.

O bien, podemos escribir un programa almacenado MySQL (procedimiento) para un enfoque más recursivo.

Como ejemplo de enfoque utilizando una consulta 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

etc. Este enfoque se puede extender a t4, t5, t6, ... hasta un número finito (razonable) de niveles.

Para un enfoque más recursivo, se puede escribir un programa almacenado MySQL (PROCEDIMIENTO).