【发布时间】:2013-02-21 11:58:22
【问题描述】:
我有一个我认为只能通过 Connect-to-prior 语句解决的问题。
我的数据模型简化如下:
create table TASK
( TASK_ID number
);
create table ITEM
( TASK_ID number,
NEXT_TASK_ID number
);
create table TASK_ITEM
( TASK_ID number,
ITEM_ID number
);
一组项目组合成一个任务。一组任务组合成一个或多个项目(这是 TASK_ITEM 连接表的来源)。该过程从一组项目开始,并以单个项目结束(最后一个项目 ITEM.NEXT_TASK_ID 为空,第一个项目不存在 task_item)。
我的问题:
给定一个 task_id 我想提取所有之前的任务。
这是一个与Philip Greenspun's excellent introduction to trees in Oracle 或Wikibook's description of Hierarchical Queries 中描述的问题接壤的问题,但是当它们包含更多ID 和一个Junction 表时,似乎找不到任何好的解决方案来解决这些问题。
可悲的是,我自己的 SQL-foo 很短,我用谷歌搜索了我的心,但没有找到解决我特定问题的方法。
Carrie Fisher 的声音:帮助我 Stack Overflow,你是我唯一的希望。
【问题讨论】:
-
能否包含几行数据? [看起来您的模型中的某些信息可能是多余的]
-
不应该是“一组项目组合成一个任务”而是“一组任务项目组合成一个任务”?
-
@phareim: 你的问题是
"Given one task_id I want to extract all preceding tasks.",那为什么我们需要tableTASK_ITEM AND TASK它可以很容易地通过只有一个table ITEM 找到?? -
在下面查看我的答案。谢谢你们的反馈,伙计们。
标签: oracle hierarchical-data connect-by