定义计算列引用另一个表
我有两个数据库表,队(ID, NAME, CITY, BOSS, TOTALPLAYER
)和 球员(ID, NAME, TEAMID, AGE
),这两个表之间的关系是一对多的,一个团队可以有很多的球员。定义计算列引用另一个表
我想知道有没有办法在Team
表中定义一个TOTALPLAYER
列作为计算?
例如,如果有10名球员的TEAMID
为1,则在Team
表,ID
是1具有TOTALPLAYER
柱,以10的值。如果我添加一个球员排,TOTALPLAYER
列的值上升到11,我不需要为它明确赋值,让它由数据库生成。任何人都知道如何实现它?
Thx提前。
顺便说一句,该数据库是SQL Server 2008 R2的
回答:
是的,你可以做到这一点 - 你需要一个函数来计算为球队的球员,并使用在计算列:
CREATE FUNCTION dbo.CountPlayers (@TeamID INT) RETURNS INT
AS BEGIN
DECLARE @PlayerCount INT
SELECT @PlayerCount = COUNT(*) FROM dbo.Player WHERE TeamID = @TeamID
RETURN @PlayerCount
END
,然后定义计算列:
ALTER TABLE dbo.Team ADD TotalPlayers AS dbo.CountPlayers(ID)
现在,如果你选择,该函数被调用每一次,对于被选择的每个团队。该值不会在队伍表中保留 - 每次从队队列表中选择时,该值都会随时计算。
因为它的价值不是持久的,所以问题的确是:它是否需要是表格上的计算列,或者如果需要,是否可以使用存储函数计算玩家人数?
回答:
您不必总存储在表 - 它可以计算当你做一个查询,像这样:
SELECT teams.*, COUNT(players.id) AS num_players FROM teams LEFT JOIN players ON teams.id = players.team_id
GROUP BY teams.id;
这将在查询中创建额外的列“NUM_PLAYERS” ,这将是每支球队的球员数量(如果有的话)。
以上是 定义计算列引用另一个表 的全部内容, 来源链接: utcz.com/qa/262857.html