求一条sql语句,树形结构

时间:2022-10-16 00:58:43
USE [test]
GO
/****** Object:  Table [dbo].[dept]    Script Date: 01/29/2015 11:30:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[dept](
[pk_dept] [varchar](50) NOT NULL,
[DeptName] [varchar](50) NOT NULL,
[pk_fathedept] [varchar](50) NULL,
[pk_comp] [varchar](50) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[dept] ([pk_dept], [DeptName], [pk_fathedept], [pk_comp]) VALUES (N'200', N'集团总经理室', N'0', N'100')
INSERT [dbo].[dept] ([pk_dept], [DeptName], [pk_fathedept], [pk_comp]) VALUES (N'201', N'A公司财务部', N'0', N'101')
INSERT [dbo].[dept] ([pk_dept], [DeptName], [pk_fathedept], [pk_comp]) VALUES (N'202', N'A公司业务部', N'0', N'101')
INSERT [dbo].[dept] ([pk_dept], [DeptName], [pk_fathedept], [pk_comp]) VALUES (N'203', N'B公司经理室', N'0', N'102')
INSERT [dbo].[dept] ([pk_dept], [DeptName], [pk_fathedept], [pk_comp]) VALUES (N'204', N'B公司研发部', N'203', N'102')
INSERT [dbo].[dept] ([pk_dept], [DeptName], [pk_fathedept], [pk_comp]) VALUES (N'205', N'B公司销售部', N'203', N'102')
INSERT [dbo].[dept] ([pk_dept], [DeptName], [pk_fathedept], [pk_comp]) VALUES (N'206', N'B公司销售部子部门', N'205', N'102')
INSERT [dbo].[dept] ([pk_dept], [DeptName], [pk_fathedept], [pk_comp]) VALUES (N'207', N'集团公司人事部', N'200', N'100')
INSERT [dbo].[dept] ([pk_dept], [DeptName], [pk_fathedept], [pk_comp]) VALUES (N'208', N'集团公司财务部', N'200', N'100')
/****** Object:  Table [dbo].[company]    Script Date: 01/29/2015 11:30:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[company](
[pk_comp] [varchar](50) NOT NULL,
[Name] [varchar](200) NOT NULL,
[pk_fathercomp] [varchar](50) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[company] ([pk_comp], [Name], [pk_fathercomp]) VALUES (N'100', N'集团公司', N'0')
INSERT [dbo].[company] ([pk_comp], [Name], [pk_fathercomp]) VALUES (N'101', N'子公司A', N'100')
INSERT [dbo].[company] ([pk_comp], [Name], [pk_fathercomp]) VALUES (N'102', N'子公司B', N'100')


第一个表是公司表(公司主键,名称,父类主键编号),第二个表是部门表(部门主键,名称,部门父类编号,公司父类编号)
最终结果是一个公司部门的树形结构

                                       集团公司
                                            |
                                    集团总经理室
                                            |
                  集团公司人事部   集团公司财务部
                                            |
                          子公司A              子公司B
                                |                        |
      A公司财务部 A公司业务部        B公司经理室
                                                                        |
                                                         B公司研发部     B公司销售部
                                                                                             |
                                                                                   B公司销售部子部门

7 个解决方案

#1


子公司A、子公司B为什么不是集团总经理室的兄弟?它们到底挂在那个节点下面?

#2


画错了,应该是

                                                                     集团公司                                                                
                                                                           |                                                                                         
                                              集团公司人事部 |  集团公司财务部                           
                                                                           |                                                                                                  
                                               子公司A                       子公司B
                                                      |                                     |
                                            财务部 业务部          经理室   销售部   
                                                                                                   |        
                                                                                                子部门                                                                                               

#3


文字表述就是  集团公司下有子公司A、B,集团公司下有部门(集团公司人事部、集团公司财务部)A公司下有部门(财务部 、业务部)B公司下有(经理室   销售部,销售部下有子部门)

#4


如果显示层次是前台程序的工作。
你期望的查询结果是什么?

#5


已解决
SQL语句最终结果

集团公司
集团公司\子公司A
集团公司\子公司B
集团公司\集团总经理室
集团公司\集团总经理室\集团公司人事部
集团公司\集团总经理室\集团公司财务部
集团公司\子公司B\B公司经理室
集团公司\子公司B\B公司经理室\B公司研发部
集团公司\子公司B\B公司经理室\B公司销售部
集团公司\子公司B\B公司经理室\B公司销售部\B公司销售部子部门
集团公司\子公司A\A公司财务部
集团公司\子公司A\A公司业务部

#6


本来就是很简单的递归语句,你非要用文字“画个图”, 求一条sql语句,树形结构

#1


子公司A、子公司B为什么不是集团总经理室的兄弟?它们到底挂在那个节点下面?

#2


画错了,应该是

                                                                     集团公司                                                                
                                                                           |                                                                                         
                                              集团公司人事部 |  集团公司财务部                           
                                                                           |                                                                                                  
                                               子公司A                       子公司B
                                                      |                                     |
                                            财务部 业务部          经理室   销售部   
                                                                                                   |        
                                                                                                子部门                                                                                               

#3


文字表述就是  集团公司下有子公司A、B,集团公司下有部门(集团公司人事部、集团公司财务部)A公司下有部门(财务部 、业务部)B公司下有(经理室   销售部,销售部下有子部门)

#4


如果显示层次是前台程序的工作。
你期望的查询结果是什么?

#5


已解决
SQL语句最终结果

集团公司
集团公司\子公司A
集团公司\子公司B
集团公司\集团总经理室
集团公司\集团总经理室\集团公司人事部
集团公司\集团总经理室\集团公司财务部
集团公司\子公司B\B公司经理室
集团公司\子公司B\B公司经理室\B公司研发部
集团公司\子公司B\B公司经理室\B公司销售部
集团公司\子公司B\B公司经理室\B公司销售部\B公司销售部子部门
集团公司\子公司A\A公司财务部
集团公司\子公司A\A公司业务部

#6


本来就是很简单的递归语句,你非要用文字“画个图”, 求一条sql语句,树形结构

#7