Oracle-连接表并连接到以前的

Oracle-连接表并连接到以前的,oracle,hierarchical-data,connect-by,Oracle,Hierarchical Data,Connect By,我有一个问题,我认为只有通过连接到前面的语句才能解决 我的数据模型简化如下: 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_ITE

我有一个问题,我认为只有通过连接到前面的语句才能解决

我的数据模型简化如下:

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为null,第一个项的TASK_项不存在)

我的问题:

给定一个任务id,我想提取前面的所有任务。

这是一个与中或中描述的问题相近的问题,但当这些问题包括更多ID和连接表时,似乎找不到解决这些问题的好方法

我自己的SQLFoo严重不足,我在谷歌上搜索了一下,没有找到解决我特定问题的方法

用嘉莉·费舍尔的声音说:帮我,你是我唯一的希望。

寻找,你会找到的

在一位同事的帮助下,我们解决了这个问题

我自己还没有看到的技巧是,首先将所需信息连接在一起,然后执行connect to语句

我认为下面的代码解决了所描述的问题

select parent_task.* 
    from (
    select  parent_task_id, item_id, task_id, level
        from (
            select 
                task.task_id parent_task_id, 
                task_item.item_id, 
                item.task_id task_id
            from 
                task, task_item, item
            where 
                task_item.task_id = task.task_id
            and 
                item.item_id = task_item.item_id) properly_structured_parent_table    
        start with task_id = :TASK_ID
        connect by prior parent_task_id = task_id 
    ) task_hierarchy, task parent_task
where parent_task.task_id = task_hierarchy.task_id;
内部mot SQL构建一个适当的父表。下一步将使用connect by Previor构建层次结构。最外层的SQL按照应用程序的要求连接其余的数据


感谢您的时间和反馈。

您能提供几行数据吗?[在您的模型中似乎有些信息可能是多余的]不应该将“一组项目组合到一个任务中”改为“一组任务项目组合到一个任务中”?@phareim:您的问题是
“给定一个任务id,我想提取前面的所有任务。”
,那么为什么我们需要表格
TASK\u项目和任务
只需一个表格项目就可以轻松找到它??请参见下面我的答案。谢谢你们的反馈,伙计们。