我有一个包含两列的表,PARENT_PART& CHILD_PART。
如果输入了部件,我需要所有链接的详细信息。该部分的所有子部件都必须在结果中。
Parent part Child part
OABCDEFG01 OABCDEFG02
OABCDEFG01 OABCDEFG03
OABCDEFG02 OABCDEFG04
OABCDEFG02 OABCDEFG05
OABCDEFG03 OABCDEFG06
OABCDEFG03 OABCDEFG07
OABCDEFG03 OABCDEFG08
OABCDEFG04 OABCDEFG09
OABCDEFG04 OABCDEFG10
OABCDEFG05 OABCDEFG11
OABCDEFG05 OABCDEFG12
OABCDEFG06 OABCDEFG13
OABCDEFG07 OABCDEFG14
OABCDEFG07 OABCDEFG15
OABCDEFG07 OABCDEFG16
OABCDEFG07 OABCDEFG17
OABCDEFG08 OABCDEFG18
OABCDEFG08 OABCDEFG19
如上表所示,如果我已经给出了PARENT-PART ='OABCDEFG02'
结果应该如下:
PARENT-PART CHILD-PART
OABCDEFG02 OABCDEFG04
OABCDEFG02 OABCDEFG05
OABCDEFG04 OABCDEFG09
OABCDEFG04 OABCDEFG10
OABCDEFG05 OABCDEFG11
OABCDEFG05 OABCDEFG12
我正在使用DB2 for z / OS(大型机系统)。
答案 0 :(得分:2)
你需要一个所谓的“公用表表达式”。它是一个递归查询,已添加到SQL标准和大多数数据库系统以生成物料清单。我没有DB2 for z / OS可用,无法测试,但这里是指向documentation of common table expressions incl. some examples的链接。
您的查询将如下所示:
WITH RPL (PART, CHILDPART) AS
( SELECT ROOT.PART, ROOT.CHILDPART
FROM PARTLIST ROOT
WHERE ROOT.PART = 'OABCDEFG02'
UNION ALL
SELECT CHILD.PART, CHILD.CHILDPART
FROM RPL PARENT, PARTLIST CHILD
WHERE PARENT.CHILDPART = CHILD.PART
)
SELECT DISTINCT PART, CHILDPART
FROM RPL
ORDER BY PART, CHILDPART