SQL - 内部 - 内部连接

SQL - inner - inner join

需要帮助...我确实尝试过并且完成了将近 60%(我猜)...

仅供参考:我们正在使用 DB2,如果我的问题不清楚,请告诉我。

我们最初的要求是找到 PRODUCT_ID 和 Part_Serial_No when:

第一个要求:

他们在实际产品上安装 actual_part

Table 结构为:

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

所以我的 SQL 很简单:

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

第二个要求:

他们更改了要求。他们说,他们在实际产品中安装了一个sub_part,实际部分将安装在sub_part。

Table 结构更改为:

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

所以我改变了我的 SQL 并且它起作用了:

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')

第三个要求:

他们再次更改了要求。他们说,他们在实际产品中安装了一个sub_part,并且在sub_part上安装了另一个sub_sub_part。实际部分会安装在sub_sub_part.

Table 结构更改为:

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

这里我需要帮助如何获得 PRODUCT_ID 和 PART_SERIAL_NUMBER

您可以加​​入table三次,如:

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'