我们有一个联赛表,现在我们想要翻滚联赛的能力(当联赛结束时,从一开始就重新开始)。建议的解决方案是向表中添加一个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链?
发布于 2015-02-19 09:11:20
Server可以做递归查询,并且有多种方法来建模链接列表,但是您真的需要吗?您是否可以采取不同的方法,并有一个包含常量详细信息(即联赛名称)的联赛定义表,然后是一个包含每个联赛实例的详细信息的联赛实例表(即开始日期和结束日期)。
发布于 2015-02-19 21:38:44
这是SQL的一个典型问题。甲骨文有一个很好的特性--我很久没有使用过甲骨文了,我不记得细节了,但它已经存在了。
如果SQL扩展失败,您可以使用sproc或使用代码来实现这一点,您只是不能用一个查询来完成它。很容易编写一个循环,再次调用查询,插入上一次运行时的值。您可以使用sproc来完成这一任务,因此如果性能存在问题,则不需要多次访问数据库引擎。
https://stackoverflow.com/questions/28600912
复制相似问题