定义计算列引用另一个表

我有两个数据库表,队(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

回到顶部