0

Need help... I did try and almost 60% done (I guess)...

fyi: we are using DB2 and please let me know if my question is not clear.

Our original requirement was to find the PRODUCT_ID and Part_Serial_No when:

First requirement:

They install the actual_part on the actual product

Table structure was:

PRODUCT_ID          PART_NAME       PART_SERIAL_NUMBER
----------          ---------       --------------
1                   ACTUAL_PART     ACTUAL_SERIAL_1
2                   ACTUAL_PART     ACTUAL_SERIAL_2

So my SQL was simple:

SELECT PRODUCT_ID, PART_SERIAL_NUMBER FROM TABLE1 WHERE PART_NAME='ACTUAL_PART'

Second Requirement:

They changed the requirement. They said, they install a sub_part in the actual product, and the actual part will be installed on sub_part.

Table structure changed to:

PRODUCT_ID          PART_NAME       PART_SERIAL_NUMBER
----------          ---------       --------------
1                   SUB_PART        SUB_PART_SERIAL_1
SUB_PART_SERIAL_1   ACTUAL_PART     ACTUAL_SERIAL_1
2                   SUB_PART        SUB_PART_SERIAL_2
SUB_PART_SERIAL_2   ACTUAL_PART     ACTUAL_SERIAL_2

So I changed my SQL and it works:

SELECT part1.PRODUCT_ID, part2.Part_Serial_No 
from TABLE1 part1 
INNER JOIN TABLE1 part2 on part1.PART_SERIAL_NUMBER = part2.PRODUCT_ID 
where part1.PART_NAME in ('SUB_PART') 
and part2.PART_NAME in ('ACTUAL_PART')

Third Requirement:

Again they changed the requirement. They said, they install a sub_part in the actual product, and there is another sub_sub_part will be installed on sub_part. The actual part will be installed on sub_sub_part.

Table structure changed to:

PRODUCT_ID              Part_Name       PART_SERIAL_NUMBER
----------              ---------       --------------
1                       SUB_PART        SUB_PART_SERIAL_1
SUB_PART_SERIAL_1       SUB_SUB_PART    SUB_SUB_PART_SERIAL_1
SUB_SUB_PART_SERIAL_1   ACTUAL_PART     ACTUAL_SERIAL_1
2                       SUB_PART        SUB_PART_SERIAL_2
SUB_PART_SERIAL_2       SUB_SUB_PART    SUB_SUB_PART_SERIAL_2
SUB_SUB_PART_SERIAL_2   ACTUAL_PART     ACTUAL_SERIAL_2

Here I need help how to get PRODUCT_ID and PART_SERIAL_NUMBER

The Impaler
  • 45,731
  • 9
  • 39
  • 76
SK.
  • 1,390
  • 2
  • 28
  • 59
  • 2
    Does this answer your question? [Recursive query in DB2 to get all items in the chain](https://stackoverflow.com/questions/25963799/recursive-query-in-db2-to-get-all-items-in-the-chain) I expect them to come back tomorrow and add another level to the chain. – Clockwork-Muse Aug 11 '20 at 20:52

1 Answers1

1

You can join the table three times, as in:

select
  a.product_id,
  b.product_id as part_id,
  c.product_id as subpart_id,
  c.part_serial_number
from table1 a
join table1 b on b.product_id = a.part_serial_number
join table1 c on c.product_id = b.part_serial_number
where a.part_name = 'SUB_PART'
  and b.part_name = 'SUB_SUB_PART'
  and c.part_name = 'ACTUAL_PART'
The Impaler
  • 45,731
  • 9
  • 39
  • 76