这可能是一个简单/具体的问题,但我真的需要帮助。我在SQL Server数据库中有两个表:Entry
和Comment
。我想在条目表中显示评论次数。当然,添加评论时评论计数会增加。两个表连接如下:
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中显示条目。问题是这样,我应该写什么作为查询来最有效地做到这一点?谢谢你的帮助。
答案 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
表。