id name iparentid
10001 客户 0
10002 部门 0
10001.01 张三 10001
10002.01 财务部 10002
怎么查成一张表id name id1 name1
10001 客户 10001.01 张三
10002 部门 10002.01 财务部
10001 客户 0
10002 部门 0
10001.01 张三 10001
10002.01 财务部 10002
怎么查成一张表id name id1 name1
10001 客户 10001.01 张三
10002 部门 10002.01 财务部
where a.iparentid = b.iparentid
下面还有人员:
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 李四