SQL维护另一个表中相关记录的最新计数

时间:2015-01-10 20:11:29

标签: sql-server

我有两张相关的表格。一个用于文章类别,另一个用于文章。我想在“类别”表中按类别维护文章数量。我的表格如下:

分类

ID | CatName | ArticleCount
1  | Cat1    | 
2  | Cat2    | 
3  | Cat3    | 

文章

ID | CatID | ArticleName
1  | 1     | Art1
2  | 2     | Art2
3  | 3     | Art3
4  | 1     | Art4

使用SQL,在添加文章时如何连续更新Categories表,以便我可以按类别保持文章数量的最新数量?鉴于我提供的示例数据,我设想我的Categories表最终结束:

类别(根据文章表格中的相关记录自动更新ArticleCount)

ID | CatName | ArticleCount
1  | Cat1    | 2
2  | Cat2    | 1
3  | Cat3    | 1

1 个答案:

答案 0 :(得分:2)

您可以轻松完成的一个选项是将ArticleCount添加为Categories表中的计算字段,该字段指向计算该类别的文章的UDF

CREATE FUNCTION [dbo].[fn_cnt](@CatID   INT)
RETURNS int
AS
BEGIN
    RETURN (SELECT COUNT(1) FROM Articles WHERE CatID = @CatID)
END
GO

CREATE TABLE Categories(
    [Id]        INT,
    [CatName]   [varchar](64),
    [ArticleCount]  AS ([dbo].[fn_cnt]([Id]))
)
GO

希望有所帮助