CatId CatName ParentId
2    产品专区  0
5    精美饰品  2
6    女性用品  2
7    精致礼品  2
8    日常用品  2
33    头饰   5
10    手表   5
11    挂件   5
14    彩妆   6
15    护肤   6
19    玩具   7
20    动漫   7
21    桌游   7
25    数码配件 8
26    手提包  8
27    皮夹   8需求:如果CatId=33,则显示:产品专区 -> 精美饰品 -> 头饰
   如果CatId=7,则显示:产品专区 -> 精致礼品
   如果CatId=2,则显示:产品专区要用递归的,因为是无限极分类,谢谢。

解决方案 »

  1.   

    是不是sql2000的?不然我等下白鞋了
      

  2.   

    这个符号会编程其他符号,你看看能不能换别的->----------------------------------------------------------------
    -- Author  :DBA_Huangzj(發糞塗牆)
    -- Date    :2013-01-16 23:09:20
    -- Version:
    --      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) 
    -- Jun 17 2011 00:57:23 
    -- Copyright (c) Microsoft Corporation
    -- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
    --
    ----------------------------------------------------------------
    --> 测试数据:[huang]
    if object_id('[huang]') is not null drop table [huang]
    go 
    create table [huang]([CatId] int,[CatName] varchar(8),[ParentId] int)
    insert [huang]
    select 2,'产品专区',0 union all
    select 5,'精美饰品',2 union all
    select 6,'女性用品',2 union all
    select 7,'精致礼品',2 union all
    select 8,'日常用品',2 union all
    select 33,'头饰',5 union all
    select 10,'手表',5 union all
    select 11,'挂件',5 union all
    select 14,'彩妆',6 union all
    select 15,'护肤',6 union all
    select 19,'玩具',7 union all
    select 20,'动漫',7 union all
    select 21,'桌游',7 union all
    select 25,'数码配件',8 union all
    select 26,'手提包',8 union all
    select 27,'皮夹',8
    --------------开始查询--------------------------
    --SELECT * FROM huang 
    DECLARE @CatId INT 
    SET @CatId=33
    ;WITH cte AS (
    select * from [huang]
    WHERE catid=@CatId
    UNION ALL 
    SELECT b.catid,b.catname,b.parentid
    FROM cte a INNER JOIN huang b ON a.parentid=b.catid)
    select DISTINCT
    stuff((select '-'+[CatName] FROM cte b       
           for xml path('')),1,1,'') '[CatName]'
    from cte 
    ----------------结果----------------------------
    /* 
    [CatName]
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    头饰-精美饰品-产品专区(1 行受影响)
    */