簡體   English   中英

如何從sql表中查找子父樹

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM