SQL Server 2008中 - 计算列
问题描述:
我有两个表:SQL Server 2008中 - 计算列
1)流
2)评论
内流,我想创建一个评论栏目。我希望Streams表中的Comments列取决于与匹配的StreamId有多少注释。
有没有简单的方法来改变当前的流表?谢谢。
答
您可以使用
-- 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
是啊,我根据计算,以understud PK。我如何创建一个视图? – user1027620
不错,这完美的作品。但我现在可以使用withCount而不是原始表流?由于它具有Streams所做的一切,包括评论数量。对? – user1027620
你可以,但记住当你在Streams表上创建一个新的字段时,你需要重新编译withCount视图来识别这些新的字段。而且,Luis Siquot,在这种情况下保持触发问题非常好。它确实是。 – Hamikzo
简单的anwser:你可以使用视图来选择而不是表格。复杂的anwser:您可以在视图上创建触发器来管理删除,更新和插入(不要为此简单任务推荐),直接使用该表。 –