有类似以下表(tab)
id name parent_id
======================
其中id是主键,parent_id表示上级分类的id,以此构成多级分类现在要求显示这个形式
id name parent_name
======================
很明显,要求那个parent_id反应成该id上级的名字试过这个办法
select id,name (select name from tab where id=parent_id) from tab倒还真查出来了,但是好像得到的数据不对,想想也有点不靠谱

解决方案 »

  1.   


    CREATE TABLE Dept(
    id int PRIMARY KEY, 
    parent_id int,
    name nvarchar(20))
    INSERT Dept
    SELECT 0, 0, N'<全部>' UNION ALL
    SELECT 1, 0, N'财务部' UNION ALL
    SELECT 2, 0, N'行政部' UNION ALL
    SELECT 3, 0, N'业务部' UNION ALL
    SELECT 4, 0, N'业务部' UNION ALL
    SELECT 5, 4, N'销售部' UNION ALL
    SELECT 6, 4, N'MIS' UNION ALL
    SELECT 7, 6, N'UI' UNION ALL
    SELECT 8, 6, N'软件开发' UNION ALL
    SELECT 9, 8, N'内部开发'select id,name,parent_name=(select name from Dept where t.parent_id=id) from Dept t/*
    id          name                 parent_name          
    ----------- -------------------- -------------------- 
    0           <全部>                 <全部>
    1           财务部                  <全部>
    2           行政部                  <全部>
    3           业务部                  <全部>
    4           业务部                  <全部>
    5           销售部                  业务部
    6           MIS                  业务部
    7           UI                   MIS
    8           软件开发                 MIS
    9           内部开发                 软件开发(所影响的行数为 10 行)*/drop table Dept