条目表上的注释计数(SQL查询)

时间:2013-12-23 20:36:45

标签: c# asp.net sql sql-server

这可能是一个简单/具体的问题,但我真的需要帮助。我在SQL Server数据库中有两个表:EntryComment。我想在条目表中显示评论次数。当然,添加评论时评论计数会增加。两个表连接如下:  Comment.EntryId = Entry.Id

Entry表:

CREATE TABLE [dbo].[Entry] (
    [Id]                  INT            IDENTITY (1, 1) NOT NULL,
    [Subject]             NVARCHAR (MAX) NOT NULL,
    [Content]             NVARCHAR (MAX) NOT NULL,
    [Type]                NVARCHAR (50)  NOT NULL,
    [SenderId]            NVARCHAR (50)  NOT NULL,
    [Date]                DATE           NOT NULL,
    [Department]          NVARCHAR (50)  NULL,
    [Faculty]             NVARCHAR (50)  NULL,
    [ViewCount]           INT            DEFAULT ((0)) NOT NULL,
    [SupportCount]        INT            DEFAULT ((0)) NOT NULL,
    [CommentCount]        INT            DEFAULT ((0)) NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

Comment表:

CREATE TABLE [dbo].[Comment] (
    [Id]               INT            IDENTITY (1, 1) NOT NULL,
    [EntryId]          INT            NOT NULL,
    [SenderId]         NVARCHAR (50)  NOT NULL,
    [Date]             DATETIME       NOT NULL,
    [Content]          NVARCHAR (MAX) NOT NULL,
    [SupportCount]     INT            NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

我在代码隐藏(c#)的gridview中显示条目。问题是这样,我应该写什么作为查询来最有效地做到这一点?谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

试试这个:

select e.Id,e.date,count(*) as NumComments
from Entry e
join comment c on c.entryId=e.id
group by e.id,e.date

如果可能没有评论,请尝试以下

select e.Id,e.date,count(c.entryId) as NumComments
from Entry e
left join comment c on c.entryId=e.id
group by e.id,e.date

答案 1 :(得分:0)

您可以使用左连接来实现此目的。请更具体地说明您在gridview

中想要的字段

为什么你想在表格中使用 commentcount (大多数表格都有 1-many relation 而我们没有使用它)。如果将其保留在表中,则每次发表评论时都必须更新entry表。