cs_schema_patch_20050421.sql

来自「解压即可使用」· SQL 代码 · 共 34 行

SQL
34
字号
ALTER TABLE [dbo].[cs_Post_Categories] ADD
	[TotalThreads] [int] NOT NULL default(0) ,
	[MostRecentPostDate] [datetime] NULL ,
	[TotalSubThreads] [int] NOT NULL default(0),
	[MostRecentSubPostDate] [datetime] NULL 
GO

declare @UpCategoryID int
declare @UpPath nvarchar(256)
DECLARE Categories_Cursor CURSOR FOR
	SELECT CategoryID FROM cs_Post_Categories

OPEN Categories_Cursor
FETCH NEXT FROM Categories_Cursor INTO @UpCategoryID

WHILE @@FETCH_STATUS = 0
BEGIN

	set @UpPath = (select Path from cs_Post_Categories where CategoryID = @UpCategoryID)

	UPDATE cs_Post_Categories SET
		TotalThreads = (SELECT COUNT(PIC.PostID) FROM cs_Posts_InCategories PIC INNER JOIN cs_Posts jP ON (jP.PostID = PIC.PostID AND jP.PostID = jP.ParentID) WHERE PIC.CategoryID = @UpCategoryID),
		TotalSubThreads = (SELECT COUNT(P.PostID) FROM cs_Posts P INNER JOIN cs_Post_Categories jC ON (jC.CategoryID = @UpCategoryID OR jC.Path LIKE @UpPath + convert(nvarchar, @UpCategoryID) + '/%') INNER JOIN cs_Posts_InCategories jPIC ON (jPIC.CategoryID = jC.CategoryID) WHERE P.PostID = P.ParentID AND P.PostID = jPIC.PostID),
		MostRecentPostDate = (SELECT MAX(PostDate) FROM cs_Posts_InCategories PIC INNER JOIN cs_Posts jP ON (jP.PostID = PIC.PostID AND jP.PostID = jP.ParentID) WHERE PIC.CategoryID = @UpCategoryID),
		MostRecentSubPostDate = (SELECT MAX(PostDate) FROM cs_Posts P INNER JOIN cs_Post_Categories jC ON (jC.CategoryID = @UpCategoryID OR jC.Path LIKE @UpPath + convert(nvarchar, @UpCategoryID) + '/%') INNER JOIN cs_Posts_InCategories jPIC ON (jPIC.CategoryID = jC.CategoryID) WHERE P.PostID = P.ParentID AND P.PostID = jPIC.PostID)
	WHERE CategoryID = @UpCategoryID

	FETCH NEXT FROM Categories_Cursor INTO @UpCategoryID
END

CLOSE Categories_Cursor
DEALLOCATE Categories_Cursor
GO

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?