现有两个表,
1、Article_Category:
CatgoryID,CategoryName,CategoryParentID
数据如下:
1 0 程序设计
2 1 C#
3 1 Delphi
4 2 C#语法介绍
5 2 C#功能介绍
6,0,新闻
2、Article:
ArticleID,CategoryID,ArticleTitle,ArticleCreateDate
1 4 C#语法介绍二 2008-1-5
2 5 C#功能介绍 2008-1-4
3 6 新闻标题一 2008-1-3
4 4 C#语法介绍一 2008-1-2
其中Article.CategoryID=Article_Category.CategoryID,Aritlce_Category是递归数结构,从CategoryParentID=0开始递归CategoryID=CategoryParenID
如何根据Article.ArticleCreateDate进行排序查询出程序设计(Article_Category.CatgoryID=1)的所有子节点的内容
格式如下:
Article.ArticleID,Article_Category.CategoryID,Article_Category.CategoryName,Article.ArticleTitle,Article.ArticleCreateDate
1 4 C#语法介绍 C#语法介绍二 2008-1-5
2 5 C#功能介绍 C#功能介绍 2008-1-4
4 4 C#语法介绍 C#语法介绍一 2008-1-2
使用SQL语句,存储过程,函数都可以,只要能实现
1、Article_Category:
CatgoryID,CategoryName,CategoryParentID
数据如下:
1 0 程序设计
2 1 C#
3 1 Delphi
4 2 C#语法介绍
5 2 C#功能介绍
6,0,新闻
2、Article:
ArticleID,CategoryID,ArticleTitle,ArticleCreateDate
1 4 C#语法介绍二 2008-1-5
2 5 C#功能介绍 2008-1-4
3 6 新闻标题一 2008-1-3
4 4 C#语法介绍一 2008-1-2
其中Article.CategoryID=Article_Category.CategoryID,Aritlce_Category是递归数结构,从CategoryParentID=0开始递归CategoryID=CategoryParenID
如何根据Article.ArticleCreateDate进行排序查询出程序设计(Article_Category.CatgoryID=1)的所有子节点的内容
格式如下:
Article.ArticleID,Article_Category.CategoryID,Article_Category.CategoryName,Article.ArticleTitle,Article.ArticleCreateDate
1 4 C#语法介绍 C#语法介绍二 2008-1-5
2 5 C#功能介绍 C#功能介绍 2008-1-4
4 4 C#语法介绍 C#语法介绍一 2008-1-2
使用SQL语句,存储过程,函数都可以,只要能实现
inner join Article a on ac.CatgoryID = a.CategoryID where ac.CatgoryID = 1 order by ArticleCreateDate DESC
---------------------
CatgoryID = 1? 这部就是说是Article_Category的第一个记录, 但是第一个记录是没有Article记录的....
你的数据库是怎么组织的,有没有定义什么主键啊外键什么的,再说你这一大片的字母看着都费劲。
试试楼上说的create view
CREATE TABLE tb(ID char(3),PID char(3),Name nvarchar(10))
INSERT tb SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'
GO--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3),Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO--调用函数查询002及其所有子节点
SELECT a.*
FROM tb a,f_Cid('002') b
WHERE a.ID=b.ID
/*--结果
ID PID Name
------ ------- ----------
002 001 烟台市
004 002 招远市
--*/给个例子吧,郁闷了