表单元格用于计数其他表中的行



我甚至不完全确定我是否以正确的方式进行此操作。MVC+EF站点,所以我可以在控制器中做到这一点,但如果可能的话,我更喜欢它在DB中。

我有两张表。一个包含条目,一个包含成员列表。我希望成员列表有一列,其中包含成员名称在条目列表中出现的次数。我能在表本身的定义中这样做吗?

我知道这个查询有效:

select count(*)
from dbo.Entries
where dbo.Entries.AssignedTo = 'Bob Smith'

但是有办法做到这一点吗?正确的语法是什么?

CREATE TABLE [dbo].[Members] (
[ID]    INT            IDENTITY (1, 1) NOT NULL,
[Name]  NVARCHAR (100) NOT NULL,
[Email] NVARCHAR (500) NOT NULL,
[Count] INT = select count(*) from dbo.Entries where dbo.Entries.AssignedTo = [Name]
PRIMARY KEY CLUSTERED ([ID] ASC)

我已经做了一些搜索,并尝试了一些不同的语法,但我完全迷失在这一点上,所以如果有人能给我在正确的方向,我真的很感激。

您可以将Members创建为结合Entries数据和另一个表的视图。(警告:未测试语法)

CREATE TABLE [_member_data] (
  [ID]   INT IDENTITY(1, 1) NOT NULL,
  [Name]  NVARCHAR (100) NOT NULL,
  [Email] NVARCHAR (500) NOT NULL,
  PRIMARY KEY CLUSTERED ([ID] ASC)
);
CREATE VIEW [dbo].[Members] AS
  SELECT ID, Name, Email, COUNT(*)
    FROM _member_data JOIN dbo.Entries ON [Name] = [AssignedTo]
    GROUP BY 1, 2, 3;

可以使用触发器/规则将尝试插入到Members中的操作重写为插入到相应的备份表中。但是为了得到你想要的那种有表现力的信息,你真的需要使用视图来探索

相关内容

最新更新