Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पदानुक्रमित डेटा प्राप्त करने के लिए MYSQL में पुनरावर्ती संग्रहीत कार्यविधियों का प्रदर्शन

एक काफी सरल पुनरावृति आसन्न सूची डीबी सर्वर साइड समाधान:http://pastie.org/1056977

delimiter ;

drop procedure if exists employee_hier;

delimiter #

create procedure employee_hier
(
in p_emp_id smallint unsigned
)
begin

declare p_done tinyint unsigned default(0);
declare p_depth smallint unsigned default(0);

create temporary table hier(
 boss_id smallint unsigned, 
 emp_id smallint unsigned, 
 depth smallint unsigned
)engine = memory;

insert into hier values (null, p_emp_id, p_depth);

/* http://dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html */

create temporary table emps engine=memory select * from hier;

while p_done <> 1 do

    if exists( select 1 from employee e inner join hier on e.boss_id = hier.emp_id and hier.depth = p_depth) then

        insert into hier select e.boss_id, e.emp_id, p_depth + 1 
            from employee e inner join emps on e.boss_id = emps.emp_id and emps.depth = p_depth;

        set p_depth = p_depth + 1;          

        truncate table emps;
        insert into emps select * from hier where depth = p_depth;

    else
        set p_done = 1;
    end if;

end while;

select 
 e.emp_id,
 e.name as emp_name,
 b.emp_id as boss_emp_id,
 b.name as boss_name,
 hier.depth
from 
 hier
inner join employee e on hier.emp_id = e.emp_id
inner join employee b on hier.boss_id = b.emp_id;

drop temporary table if exists hier;
drop temporary table if exists emps;

end #

delimiter ;


call employee_hier(1);
call employee_hier(3);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql INSERT के लिए mongodb अनुवाद... चुनें

  2. क्या MySQL क्वेरी में टेबल और कॉलम के आसपास उद्धरण वास्तव में आवश्यक हैं?

  3. संसाधन आईडी #4 PHP MYSQL

  4. जब आप उपयोगकर्ता साइनअप पर सबडोमेन स्वतः बनाते हैं तो क्या यह एक नई वेबसाइट बनाता है या किसी वेबसाइट का रूप देता है?

  5. PHP और MySQL का उपयोग करके संबंधित या समान पोस्ट बनाना