यहां, मैंने आपके लिए एक छोटा सा कार्य किया है, मैंने इसे अपने डेटाबेस (एमएएमपी) में चेक किया है और यह ठीक काम करता है
use mySchema;
drop procedure if exists getParents;
DELIMITER $$
CREATE PROCEDURE getParents (in_ID int)
BEGIN
DROP TEMPORARY TABLE IF EXISTS results;
DROP TEMPORARY TABLE IF EXISTS temp2;
DROP TEMPORARY TABLE IF EXISTS temp1;
CREATE TEMPORARY TABLE temp1 AS
select distinct ID, parentID
from tasks
where parentID = in_ID;
create TEMPORARY table results AS
Select ID, parentID from temp1;
WHILE (select count(*) from temp1) DO
create TEMPORARY table temp2 as
select distinct ID, parentID
from tasks
where parentID in (select ID from temp1);
insert into results select ID, parentID from temp2;
drop TEMPORARY table if exists temp1;
create TEMPORARY table temp1 AS
select ID, parentID from temp2;
drop TEMPORARY table if exists temp2;
END WHILE;
select * from results;
DROP TEMPORARY TABLE IF EXISTS results;
DROP TEMPORARY TABLE IF EXISTS temp1;
END $$
DELIMITER ;
यह कोड सभी माता-पिता को किसी भी गहराई तक वापस कर देगा। आप स्पष्ट रूप से परिणामों में कोई अतिरिक्त फ़ील्ड जोड़ सकते हैं
इसे इस तरह इस्तेमाल करें
call getParents(9148)
उदाहरण के लिए