我有一个有两列的表,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(大型机系统)
为此需要一个所谓的"公共表表达式"。它是添加到SQL标准和大多数数据库系统中的递归查询,用于生成物料清单。我没有可用的DB2 for z/OS,因此无法进行测试,但是这里提供了到常用表表达式文档的链接,其中包括一些示例。
你的查询将看起来像这样:
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