【发布时间】:2020-03-06 05:36:57
【问题描述】:
我必须从父子表中获取子记录。如果有人熟悉 ia 表中的 BOM 概念 Parent Item 可以有许多子记录,其中一个子项也可以有多个子项,所有信息都保存在 BOM 表中。查询和结果是这样的
CREATE TABLE ITEM(ID, ITEM_NUMBER)'
INSERT INTO ITEM VALUES (1, 'ITEM-A');
INSERT INTO ITEM VALUES (2, 'ITEM-A1');
INSERT INTO ITEM VALUES (3, 'ITEM-A2');
INSERT INTO ITEM VALUES (4, 'ITEM-A2');
INSERT INTO ITEM VALUES (5, 'ITEM-A2-1');
INSERT INTO ITEM VALUES (6, 'ITEM-A2-2');
CREATE TABLE BOM(ID, PARENT_ITEM, COMPONENT);
INSERT INTO BOM VALUES (1, 1, 2);
INSERT INTO BOM VALUES (2, 1, 3);
INSERT INTO BOM VALUES (3, 1, 4);
INSERT INTO BOM VALUES (4, 2, 5);
INSERT INTO BOM VALUES (5, 2, 6);
SELECT ia.ITEM_NUMBER PARENT_ITEM, ic.ITEM_NUMBER COMPONENT
FROM BOM
INNER JOIN AGILE.ITEM ia ON BOM.ITEM = ia.id
INNER JOIN AGILE.ITEM ic ON ic.id = BOM.COMPONENT
WHERE ia.ITEM_NUMBER = 'ITEM-A'
这个查询会返回这样的结果。
PARENT_ITEM COMPONENT
ITEM-A ITEM-A1
ITEM-A ITEM-A2
ITEM-A ITEM-A3
我想要的是,如果让我说 ITEM-A2 有 2 个子记录,那么我正在尝试构建的查询应该返回类似这样的记录
PARENT_ITEM COMPONENT
ITEM-A ITEM-A1
ITEM-A ITEM-A2
ITEM-A ITEM-A3
ITEM-A2 ITEM-A2-1
ITEM-A2 ITEM-A2-2
【问题讨论】:
-
不是很清楚你想要什么。请提供与预期数据相对应的输入数据。
-
这能回答你的问题吗? Recursion In Oracle
-
如果这仅适用于直系子女,您可以。 1. 创建子查询,您可以在其中执行自连接并获取子查询 2. 与您提供的查询联合
-
@AaronDietz 我已经看过那篇文章,但在我的情况下并没有很好地结束
-
@lukaszberwid 我想在 where 子句中提供“ITEM-A”的名称,它应该将所有家庭记录都放在第 n 级。在这种情况下,所有 5 行