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