首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >链接ID链(自引用表)

链接ID链(自引用表)
EN

Stack Overflow用户
提问于 2015-02-19 07:40:17
回答 2查看 105关注 0票数 0

我们有一个联赛表,现在我们想要翻滚联赛的能力(当联赛结束时,从一开始就重新开始)。建议的解决方案是向表中添加一个RolloverLeagueID:

  • LeagueId
  • 其他栏
  • RolloverLeagueID

我在这里的问题是,我们何时不可避免地要进行报告。你将如何展示一个联盟的全部历史?

代码语言:javascript
运行
复制
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
  • PreviousLeagueId
  • NewLeagueId

它上有一个复合键,其中RolloverChainId沿着链持久化。然后按照日期、Id或其他的顺序返回所有的联赛和RolloverChainId。

是否有更好的方法来连接一个ID链?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-19 09:11:20

Server可以做递归查询,并且有多种方法来建模链接列表,但是您真的需要吗?您是否可以采取不同的方法,并有一个包含常量详细信息(即联赛名称)的联赛定义表,然后是一个包含每个联赛实例的详细信息的联赛实例表(即开始日期和结束日期)。

票数 1
EN

Stack Overflow用户

发布于 2015-02-19 21:38:44

这是SQL的一个典型问题。甲骨文有一个很好的特性--我很久没有使用过甲骨文了,我不记得细节了,但它已经存在了。

如果SQL扩展失败,您可以使用sproc或使用代码来实现这一点,您只是不能用一个查询来完成它。很容易编写一个循环,再次调用查询,插入上一次运行时的值。您可以使用sproc来完成这一任务,因此如果性能存在问题,则不需要多次访问数据库引擎。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28600912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档