我们有一个“联赛”表,现在希望能够将联赛延期(联赛结束后,从头开始重新开始)。提议的解决方案是仅向表中添加一个RolloverLeagueID:
我的问题是,当我们不可避免地要进行报告时。您将如何显示联赛的完整历史?
SELECT
*
FROM
League AS L1
LEFT OUTER JOIN League AS L2
ON L1.Id = L2.Id
LEFT OUTER JOIN League AS L3
etc etc
这显然是不切实际的。有没有一种方法可以递归查询此信息?
我的倾向是添加另一个像这样的表:
上面有一个复合键,其中RolloverChainId沿链保留。然后按照日期,ID或其他顺序返回带有该RolloverChainId的所有联赛。
是否有链接ID链的更好方法?
SQL Server可以进行递归查询,并且有多种方法可以对链接列表进行建模,但是您真的需要吗?您是否可以采用其他方法,并拥有一个包含常量详细信息(即联赛名称)的联赛定义表,然后拥有一个包含联赛每个实例(即开始和结束日期)的细节的联赛实例表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句