从外键约束中选择已使用和未使用的行

时间:2016-10-24 05:47:48

标签: sql oracle

我有以下表格。

components (prodNo, compNo, partNo)
parts (partNo, partName)
products (prodNo, prodName)

我需要选择正在使用的部件或不用于制造不同产品的部件。

我可以选择正在使用的部件,但不知道如何在结果中包含未使用的部件。

无论如何,结果应该是以下格式

结果

prodNo, prodName, partNo, partName, compNo, status
101     A           23     G         55      YES
NULL    NULL        20     I         NULL    NO
34      F           555    S         58      YES

2 个答案:

答案 0 :(得分:1)

您应该使用parts表作为查询的核心,并使用相应的组件和产品表进行外连接

Select products.prodNo, products.prodName, parts.partNo, parts.partName, components.compNo,
case when NVL(products.prodNo,0) > 0 then 'YES' else 'NO' end as status
from parts 
left outer join components on components.partNo = parts.partNo
left outer join products on products.prodNo = components.prodNo

答案 1 :(得分:0)

Select p.prodNo,prd.prodName,prt.partNo,prt.partName,p.compNo,IF (p.prodNo IS NULL,"NO","YES") as status 
from components as p 
LEFT OUTER JOIN parts prd as p.partNo = prd.partNo 
LEFT OUTER JOIN products prt on p.prodNo = prt.prodNo