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'
需要帮助...我确实尝试过并且完成了将近 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'