Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie hierarchiczne w MySQL. (połącz przez odpowiednik dla MySQL)

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).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj zapytanie, aby zaktualizować wiersze w MySQL

  2. Konwertuj binarny na dziesiętny za pomocą MySQL

  3. Jak sprawdzić, czy klawisze włączania/wyłączania działają?

  4. tworzenie połączenia w eclipse - ClassNotFoundException:com.mysql.jdbc.Driver

  5. Błąd Dockera php_network_getaddresses