第一题     有下表
           
           要求列出张_父的子,只有一列一行,两个人用“,” 分割
第二题   
          给定以下三个表(表结构)
  表a-职务表       字段 id parentid 职务编号 职务全称
  表b-用户表       字段 id 用户编号 用户全称
  表c-用户职务表   字段 用户编号 职务编号  
要求写一条sql语句生成一个结果集,次结果集要求如下
(1)有如下几列 id parentid 编号 全称
(2)结果集记录了所有的项(职务和用户)及他们的父子关系,其中每一列是一个职务或者一个用户的信息
(3)若一项为叶子节点,则id可以为空,否则为原在表的id

解决方案 »

  1.   

    第一个很好写:
    做一个自连接 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='张_父'
      

  2.   

    第一题
    select 
    replace(
    replace(
    (select renname from relation where parentid=(select renid from relation where renname='张_父')
    for xml path('r')),
    '<r><renname>',
    ''),
    '</renname></r>',
    ',')
      

  3.   


    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
    ---------------
    张一,张_二