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
| |
财务部 业务部 经理室 销售部
|
子部门
集团公司
|
集团公司人事部 | 集团公司财务部
|
子公司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公司业务部
SQL语句最终结果
集团公司
集团公司\子公司A
集团公司\子公司B
集团公司\集团总经理室
集团公司\集团总经理室\集团公司人事部
集团公司\集团总经理室\集团公司财务部
集团公司\子公司B\B公司经理室
集团公司\子公司B\B公司经理室\B公司研发部
集团公司\子公司B\B公司经理室\B公司销售部
集团公司\子公司B\B公司经理室\B公司销售部\B公司销售部子部门
集团公司\子公司A\A公司财务部
集团公司\子公司A\A公司业务部
#6
本来就是很简单的递归语句,你非要用文字“画个图”,
#1
子公司A、子公司B为什么不是集团总经理室的兄弟?它们到底挂在那个节点下面?
#2
画错了,应该是
集团公司
|
集团公司人事部 | 集团公司财务部
|
子公司A 子公司B
| |
财务部 业务部 经理室 销售部
|
子部门
集团公司
|
集团公司人事部 | 集团公司财务部
|
子公司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公司业务部
SQL语句最终结果
集团公司
集团公司\子公司A
集团公司\子公司B
集团公司\集团总经理室
集团公司\集团总经理室\集团公司人事部
集团公司\集团总经理室\集团公司财务部
集团公司\子公司B\B公司经理室
集团公司\子公司B\B公司经理室\B公司研发部
集团公司\子公司B\B公司经理室\B公司销售部
集团公司\子公司B\B公司经理室\B公司销售部\B公司销售部子部门
集团公司\子公司A\A公司财务部
集团公司\子公司A\A公司业务部
#6
本来就是很简单的递归语句,你非要用文字“画个图”,
#7
建议先看看
【如何更有效地在SQL Server论坛上提问】