[英]How to find child-parent tree from sql table
我有一個表, child
在那里我有以下結構:
id child_name parent_id parent_name
1 vikas 2 sunny
2 john 3 seema
3 ajay 4 delhi
4 josh 4 main
我試圖找到child to parent,直到parent_name匹配main,然后我將停止。 如果可能,我需要單個查詢sql。
我嘗試了這個,但它只給了我一個級別。
SELECT ChildUserType.child_name,
ChildUserType.parent_name,
ParentUserType.id,
ParentUserType.parent_id
FROM groups AS ChildUserType
LEFT JOIN groups AS ParentUserType
ON ChildUserType.id = ParentUserType.parent_id
where ChildUserType.id='1';
你可以試試這個:
CREATE PROCEDURE find_ancestry(IN id_init int)
BEGIN
DECLARE child_id int;
DECLARE prev_id int;
SET prev_id = id_init;
SET child_id=0;
SELECT parent_id into child_id
FROM groups WHERE id=id_init ;
create TEMPORARY table IF NOT EXISTS temp_table as (select * from groups where 1=0);
truncate table temp_table;
WHILE child_id <> 0 DO
insert into temp_table select * from groups WHERE id=prev_id;
SET prev_id = child_id;
SET child_id=0;
SELECT parent_id into child_id
FROM groups WHERE id=prev_id;
END WHILE;
select * from temp_table;
END //
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.