2011-11-16 123 views
0

我有两个表:SQL Server 2008中 - 计算列

1)流

2)评论

内流,我想创建一个评论栏目。我希望Streams表中的Comments列取决于与匹配的StreamId有多少注释。

有没有简单的方法来改变当前的流表?谢谢。

回答

1

您可以使用

-- be careful, I do asume lot of field names 
create view withCount as 
select s.*, c.cant 
from Streams s 
left join 
    (select Streams_ID, count(*) as cant from Comments group by Streams_ID) as c 
    on s.id = c.Streams_ID 

然后

select * from withCount where ... order by ... // or whatever you want 

不要使用触发器来这一任务,他们更难治维护和

+0

不错,这完美的作品。但我现在可以使用withCount而不是原始表流?由于它具有Streams所做的一切,包括评论数量。对? – user1027620

+0

你可以,但记住当你在Streams表上创建一个新的字段时,你需要重新编译withCount视图来识别这些新的字段。而且,Luis Siquot,在这种情况下保持触发问题非常好。它确实是。 – Hamikzo

+0

简单的anwser:你可以使用视图来选择而不是表格。复杂的anwser:您可以在视图上创建触发器来管理删除,更新和插入(不要为此简单任务推荐),直接使用该表。 –

3

如果你想要一个“真正的”列值,看看使用触发器。不过,另一种选择可能是计算此字段的视图 - 如果您要根据主键值计算评论,那么它应该是一个非常快速的计算。

+0

是啊,我根据计算,以understud PK。我如何创建一个视图? – user1027620