第一题 有下表
要求列出张_父的子,只有一列一行,两个人用“,” 分割
第二题
给定以下三个表(表结构)
表a-职务表 字段 id parentid 职务编号 职务全称
表b-用户表 字段 id 用户编号 用户全称
表c-用户职务表 字段 用户编号 职务编号
要求写一条sql语句生成一个结果集,次结果集要求如下
(1)有如下几列 id parentid 编号 全称
(2)结果集记录了所有的项(职务和用户)及他们的父子关系,其中每一列是一个职务或者一个用户的信息
(3)若一项为叶子节点,则id可以为空,否则为原在表的id
要求列出张_父的子,只有一列一行,两个人用“,” 分割
第二题
给定以下三个表(表结构)
表a-职务表 字段 id parentid 职务编号 职务全称
表b-用户表 字段 id 用户编号 用户全称
表c-用户职务表 字段 用户编号 职务编号
要求写一条sql语句生成一个结果集,次结果集要求如下
(1)有如下几列 id parentid 编号 全称
(2)结果集记录了所有的项(职务和用户)及他们的父子关系,其中每一列是一个职务或者一个用户的信息
(3)若一项为叶子节点,则id可以为空,否则为原在表的id
做一个自连接 test 为表名
SELECT children.[renid]
,children.[renname]
,children.[parentid]
FROM [dbo].[test] parent inner join [dbo].[test] children on parent.renid=children.parentid
where parent.renid=10 --10 是张_父的renid 或者可以写 parent.renname='张_父'
select
replace(
replace(
(select renname from relation where parentid=(select renid from relation where renname='张_父')
for xml path('r')),
'<r><renname>',
''),
'</renname></r>',
',')
declare @tb table(renid int,renname varchar(50),parentid int)
insert into @tb
select 2,'张一',10 union all
select 3,'张_二',10 union all
select 10,'张_父',15
select
stuff((select ',' + ltrim(a.renname) from (select renid,renname,parentid from @tb where parentid
in(select renid from @tb where renname in('张_父'))) as a where renname = a.renname for xml path('')),1 ,1 ,'') as renname
------------
renname
---------------
张一,张_二