我甚至不完全确定我是否以正确的方式进行此操作。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
中的操作重写为插入到相应的备份表中。但是为了得到你想要的那种有表现力的信息,你真的需要使用视图来探索