Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:基于Select中的数据链链接表中的多行_Sql_Oracle_Join - Fatal编程技术网

SQL:基于Select中的数据链链接表中的多行

SQL:基于Select中的数据链链接表中的多行,sql,oracle,join,Sql,Oracle,Join,我试图创建一个select语句,它将根据“LINK\u SEQUENCE”列返回所有链接行。但是,该列仅将两行链接在一起。对我来说,一个结合这两者的简单查询非常有意义。但是,如果“链”中存在三个或更多链接,我希望确保返回所有代码 如果只处理其中一个代码的查询,我将如何返回类似的内容?例:3245 不确定这在这种情况下是否很重要,但这是针对Oracle数据库的。非常感谢大家 来自SQL FIDLE的源数据: ID CODE LINK_SEQUENCE NAME 1 3267

我试图创建一个select语句,它将根据“LINK\u SEQUENCE”列返回所有链接行。但是,该列仅将两行链接在一起。对我来说,一个结合这两者的简单查询非常有意义。但是,如果“链”中存在三个或更多链接,我希望确保返回所有代码

如果只处理其中一个代码的查询,我将如何返回类似的内容?例:3245

不确定这在这种情况下是否很重要,但这是针对Oracle数据库的。非常感谢大家

来自SQL FIDLE的源数据:

ID  CODE    LINK_SEQUENCE   NAME
1   3267    1               Potato
2   3245    1               Potato
3   3245    2               Potato
4   3975    2               Potato
5   3975    3               Potato
6   5478    3               Potato
7   2368    4               Apricot
8   4748    4               Apricot
9   8957    (null)          Carrot
看我的

第二次尝试:

SELECT DISTINCT * 
FROM LinkedTable
START WITH code = 3245
CONNECT BY NOCYCLE
           PRIOR code = code  AND PRIOR link_sequence+1 = link_sequence OR
           PRIOR code <> code AND PRIOR link_sequence =   link_sequence
ORDER BY link_sequence, code
;

看看我是否正确:给定一个“代码”,例如3245,您想选择所有具有相同
LINK\u序列的行吗?我还想获取该链中的其他代码。。。请注意,对于该表,当您输入代码3167、3245或3975时,IDs1、2、3和4应该返回。链中可能包含一个或多个链接序列…添加了您的数据。使用新代码更新了我的答案。请测试。我还想在那个链中得到其他代码。。。注意,对于该表,当您输入代码3167、3245或3975时,IDs1、2、3和4应该返回。在此表中,产品信息在变更发生前输入。进行简单更改(例如:描述)时,将创建一个简单条目。当产品代码更改时,将创建两个条目。一个来自代码更改之前,一个来自代码更改之后。link_序列是对此的唯一引用。我想做的是有一个查询,它将返回所有的历史记录,包括过去可能涉及的代码。在产品的生命周期内,可能会对其代码进行两到三次更改。所有更改都应返回的原因是该产品是同一产品中的一个。代码只是碰巧随着时间的推移从一个更改到另一个。此SQL应返回历史记录。此历史记录应显示从一开始的所有产品活动。该产品以代码3267开始,随着时间的推移已演变为产品5478。3267通过链接_序列1与3245绑定,3245通过链接_序列2与3975绑定,3975通过链接_序列3与5478绑定。名称根本不起作用。如果LINK_序列为NULL,我们仍然希望它返回。它只是碰巧没有与其他记录的链接。非常感谢你的耐心。
SELECT DISTINCT * 
FROM LinkedTable
START WITH code = 3245
CONNECT BY NOCYCLE
           PRIOR code = code  AND PRIOR link_sequence+1 = link_sequence OR
           PRIOR code <> code AND PRIOR link_sequence =   link_sequence
ORDER BY link_sequence, code
;
ID  CODE    LINK_SEQUENCE   NAME
2   3245    1              Potato
1   3267    1              Potato
3   3245    2              Potato
4   3975    2              Potato
5   3975    3              Potato
6   5478    3              Potato