类别表 项目表
typeid parentid typename id typeid name
1 0 顶级分类 1 1 ...
2 1 二级分类 2 1 ...
3 2 三级分类 3 2 ...
4 3 四级分类 4 2 ...
5 3 ...
6 4 ...
可以无限极分类.........
类别表可以无限分类,然后通过某一个分类的typeid 在项目表里查询(跟项目表里typeid关联)当前分类包括所有子类别 (子类别的子类别....类似递归了 但是查询的是项目表里的数据) 的数据? 各位大神门帮帮忙
怎么写? 这个帖子发布后怎么变这样,重新说明下问题 类别表
typeid parentid typename
1 0 顶级分类
2 1 二级分类
3 2 三级分类
4 3 四级分类
可以无限极分类.........
项目表
projectid typeid name
1 1 顶级分类
2 2 二级分类
3 2 二级分类
4 3 三级分类
5 3 三级分类 类别表可以无限分类,然后通过某一个分类的typeid 在项目表里查询(跟项目表里typeid关联)当前分类包括所有子类别 (子类别的子类别....类似递归了 但是查询的是项目表里的数据) 的数据? 各位大神门帮帮忙
AS( SELECT typeid,parentid
FROM 类别表 AS a
where typeid=@typeid --起始节点
UNION ALL
SELECT typeid,parentid
FROM 类别表 AS a INNER JOIN TEST AS b
ON a.parentid = b.typeid)
select * from 项目表 where typeid IN (SELECT typeid FROM TESTtype)
AS( SELECT typeid,parentid
FROM 类别表 AS a
where typeid=@typeid --起始节点 --@typeid 为楼主所查类别
UNION ALL
SELECT a.typeid,a.parentid
FROM 类别表 AS a INNER JOIN TESTtype AS b
ON a.parentid = b.typeid)select * from 项目表 where typeid IN (SELECT typeid FROM TESTtype)
INSERT INTO test
SELECT 1, 0, '顶级分类'
UNION ALL
SELECT 2, 1 ,'二级分类'
UNION ALL
SELECT 3, 2, '三级分类'
UNION ALL
SELECT 4, 3, '四级分类'
create table 项目表 (projectid int , typeid int, name varchar(10))
insert into 项目表
select 1, 1 ,'顶级分类'
union all
select 2, 2, '二级分类'
union all
select 3, 2, '二级分类'
union all
select 4, 3 ,'三级分类'
union all
select 5 ,3 ,'三级分类'
*/
DECLARE @a INT =2
;WITH cte
AS (
--SELECT * FROM test
SELECT typeid, parentid ,typename
FROM test
WHERE typeid=@a
UNION ALL
SELECT b.typeid,b.parentid,b.typename
FROM cte a INNER JOIN test b ON b.parentid=a.typeid
)
SELECT *
FROM cte a LEFT JOIN 项目表 b ON a.typeid=b.typeid
/*
typeid parentid typename projectid typeid name
----------- ----------- ---------- ----------- ----------- ----------
2 1 二级分类 2 2 二级分类
2 1 二级分类 3 2 二级分类
3 2 三级分类 4 3 三级分类
3 2 三级分类 5 3 三级分类
4 3 四级分类 NULL NULL NULL
(5 行受影响)
*/