id name iparentid
10001 客户 0
10002 部门 0
10001.01 张三 10001
10002.01 财务部 10002
怎么查成一张表id name id1 name1
10001 客户 10001.01 张三
10002 部门 10002.01 财务部

解决方案 »

  1.   

    select a.id, a.name,b.id1,b.name1 from (select * from c where c.iparentId = '0') a ,(select c.id id1, c.name name1,c.iparentid from c where c.iparentId <> '0') b
    where a.iparentid = b.iparentid 
      

  2.   

    如果10002.01 财务部 
    下面还有人员:
    10002.01.001    李四
    这就是个递归的查询了,Oracle下面支持connect by ... start with语法
    DB2或者SqlServer下面可以使用With:
    WITH CUSTOM_N
    (
    ID,
    NAME
    )
    AS
    (
    SELECT ID,NAME
    FROM TABLE1
    UNION ALL
    SELECT T.ID,T.NAME
    FROM TABLE1 T, CUSTOM_N VT
    WHERE VT.ID = T.PARENTID
    )
    SELECT * FROM CUSTOM_N这样查出来的就是:
    ID           NAME
    ------------------
    10001      客户
    10001.01     张三
    10002      部门
    10002.01     财务部
    10002.01.001 李四