首页 新闻 搜索 专区 学院

MySql 查询树形结构路径问题

0
悬赏园豆:50 [待解决问题]

 表结构如下:

DROP TABLE IF EXISTS `tb_org`;
CREATE TABLE `rds_mapping_org` (
  `Org_ID` varchar(50) NOT NULL DEFAULT '',  --主键
  `Org_ParentID` varchar(50) DEFAULT NULL,    --父ID
  `Org_Name` varchar(50) DEFAULT NULL,        --名称
  PRIMARY KEY (`Org_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据如下:

INSERT INTO `tb_org` VALUES ('02163340-ff8e-444c-83f3-16c1ba9df230','66a04c28-6174-4188-a00b-47d378bb66e9','二级部门1');
INSERT INTO `tb_org` VALUES ('66a04c28-6174-4188-a00b-47d378bb66e9','f7364e25-91ba-4ade-b7e8-353aedd43437','一级部门1');
INSERT INTO `tb_org` VALUES ('d1a3612c-69a5-42a4-820a-bc54d4b0f005','f7364e25-91ba-4ade-b7e8-353aedd43437','一级部门2');
INSERT INTO `tb_org` VALUES ('db714c65-df84-4f09-8178-738eb7ff5f30','d1a3612c-69a5-42a4-820a-bc54d4b0f005','二级部门2');
INSERT INTO `tb_org` VALUES ('f7364e25-91ba-4ade-b7e8-353aedd43437',NULL,'根部门');

请问我要如何查出路径? 举例如下:

Org_ID                  Org_Name   Org_Path

02163340-ff8e-444c-83f3-16c1ba9df230             二级部门1         二级部门1,一级部门1,根部门
db714c65-df84-4f09-8178-738eb7ff5f30              二级部门2         二级部门2,一级部门2,根部门

不能用存储过程和函数,业务要求远程执行sql语句,无法更改目标数据库

 

coder_wang的主页 coder_wang | 初学一级 | 园豆:193
提问于:2016-07-02 15:06
< >
分享
所有回答(2)
0

数据库自带函数也不行?

Постой! | 园豆:842 (小虾三级) | 2016-07-08 10:58
0
create TABLE rds_mapping_org
 (
  Org_ID varchar(50) NOT NULL ,--主键
  Org_ParentID varchar(50)  NULL,    --父ID
  Org_Name varchar(50)  NULL,        --名称
) 


INSERT INTO rds_mapping_org VALUES ('66a04c28-6174-4188-a00b-47d378bb66e9','f7364e25-91ba-4ade-b7e8-353aedd43437','a1');
INSERT INTO rds_mapping_org VALUES ('d1a3612c-69a5-42a4-820a-bc54d4b0f005','f7364e25-91ba-4ade-b7e8-353aedd43437','a2');
INSERT INTO rds_mapping_org VALUES ('db714c65-df84-4f09-8178-738eb7ff5f30','d1a3612c-69a5-42a4-820a-bc54d4b0f005','b2');
INSERT INTO rds_mapping_org VALUES ('f7364e25-91ba-4ade-b7e8-353aedd43437',NULL,'root');

;with cte as 
(
    select *,cast(p.org_name as nvarchar(max)) as namepath
    from rds_mapping_org p
    where Org_ParentID is null

    union all 

    select p.org_id,p.org_parentid,p.org_name,p.org_name+'->'+c.namepath as namepath
    from cte c 
    inner join rds_mapping_org p 
        on p.Org_ParentID=c.Org_ID
)
select *
from cte

 

SQL Server 中,可以使用CTE实现,不难,MYSQL 就不懂了

悦光阴 | 园豆:2251 (老鸟四级) | 2016-08-20 18:36

支持(0) 反对(0) 悦光阴 | 园豆:2251 (老鸟四级) | 2016-08-20 18:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册