sql >> Databáze >  >> RDS >> Mysql

Hierarchický dotaz v MySQL. (připojit ekvivalentem pro MySQL)

MySQL nepodporuje nativní hierarchické dotazy.

Abychom mohli projít konečný počet úrovní, můžeme napsat dotazy, které získají výsledek pro každou úroveň, a výsledky zkombinovat s UNION ALL operátor.

Nebo můžeme napsat program (proceduru) uložený v MySQL pro více rekurzivní přístup.

Jako příklad přístupu pomocí nativního SQL dotazu:

 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

atd. Tento přístup lze rozšířit na t4, t5, t6, ... až na nějaký (rozumný) konečný počet úrovní.

Pro více rekurzivní přístup lze napsat uložený program MySQL (PROCEDURE).




  1. Jak najít další záznam po zadaném v SQL?

  2. Je možné vkládat data do pohledu MySQL?

  3. Podivná chybová zpráva SQLAlchemy:TypeError:objekt 'dict' nepodporuje indexování

  4. Přejmenujte název tabulky Mysql pomocí concat