SQL:从一个查询循环结果并使用每个结果执行另一个查询

时间:2013-12-01 23:22:28

标签: asp.net sql

我希望我的问题标题是可以理解的 - 无法描述这个问题,但我会尝试。

我正在制作一个ASP.NET Fantasy Hockey Playoff Pool网络应用程序。我正在尝试创建榜单页面,我想在页面加载时做的第一件事是更新每个团队的总积分以获得准确的排名。

我这里有3个表:团队包含每个团队的所有者ID和一个TotalPoints列(我想要更新),DraftedPlayers包含玩家的ID和一个OwnerID来确定玩家所在的团队,和存储球员姓名和数据(球员,助攻,总得分)的球员。

我想从Teams表中获取每个OwnerID并更新每个团队的TotalPoints列。我相信我已经找到了更新声明......

UPDATE Teams
SET TotalPoints = 
(SELECT SUM(TotalPoints) 
FROM Players INNER JOIN DraftedPlayers ON Players.PlayerID=DraftedPlayers.PlayerID) 
WHERE OwnerID = @OwnerID

这很简单,可以获得所有的所有者ID:

SELECT OwnerID FROM Teams;

有人可以帮我弄清楚如何从第二个查询中获取结果并将每个所有者ID传递给第一个查询吗?

1 个答案:

答案 0 :(得分:0)

加载页面后,您可以执行以下操作:

select teamName, sum(goals + assists) teamPoints
from teams t join draftedPlayers dp on t.teamId = dp.teamId
join players p on dp.playerId = p.playerId
group by teamName

这将允许您从玩家和团队表中删除totalPoints列。数据库规范化的原则之一是不存储计算值。