Oracle SQL--获取不销售特定项目的供应商列表
我的作业中有一个问题让我困惑 列出所有未列出的供应商标识号和供应商名称 提供“电源范围”和“电源螺丝刀”Oracle SQL--获取不销售特定项目的供应商列表,sql,oracle,Sql,Oracle,我的作业中有一个问题让我困惑 列出所有未列出的供应商标识号和供应商名称 提供“电源范围”和“电源螺丝刀” 所以,我们有一个vendorcatalog和inventorydes表 供应商 vid(供应商ID-主键) 卖方名称 地址 供应商目录 vid(供应商ID) 项目编号(项目编号) 两者都是主键 资源清册 itemno(主键) 项目描述 当前查询 SELECT vid, vendorname FROM (SELECT vendor.vid, vendor.vendorname
所以,我们有一个vendorcatalog和inventorydes表 供应商 vid(供应商ID-主键) 卖方名称 地址 供应商目录 vid(供应商ID) 项目编号(项目编号) 两者都是主键 资源清册 itemno(主键) 项目描述
当前查询
SELECT vid, vendorname
FROM (SELECT vendor.vid, vendor.vendorname
FROM inventorydes, vendor, vendorcatalog
WHERE inventorydes.itemno = vendorcatalog.itemno
AND vendorcatalog.vid = vendor.vid
AND inventorydes.itemdescription NOT IN ('power range', 'power screw driver'))
这将显示所有不提供该项目的供应商,但随后将列出他们销售的每个项目的每个供应商。我需要的只是一个带有供应商名称的供应商ID列表,而不是带有正在销售的每个项目的供应商名称的供应商ID
因此,我需要的是一个SQL查询(在Oracle数据库上运行),该查询将获取每个不提供电源范围和电源螺丝刀的供应商ID
SELECT
vid,
vendorname
FROM
vendor
WHERE
NOT EXISTS
(
SELECT 1
FROM
inventorydes,
vendorcatalog
WHERE
inventorydes.itemno = vendorcatalog.itemno AND
vendorcatalog.vid = vendor.vid AND
inventorydes.itemdescription IN ('power range', 'power screw driver')
)
最终输出应如下所示:
v1 |此供应商的名称v2 |此供应商的名称
v3 |此供应商的名称
只有4家供应商,第4家供应商提供功率范围和功率螺丝刀。未经测试,但这应该可以:
SELECT
vid,
vendorname
FROM
vendor
WHERE
NOT EXISTS
(
SELECT 1
FROM
inventorydes,
vendorcatalog
WHERE
inventorydes.itemno = vendorcatalog.itemno AND
vendorcatalog.vid = vendor.vid AND
inventorydes.itemdescription IN ('power range', 'power screw driver')
)
SELECT V.vid, V.vendorname
FROM Vendor V
WHERE NOT EXISTS (
SELECT 1
FROM vendorcatalog VC, inventorydes I
WHERE V.vid=VC.vid AND I.itemno=VC.itemno
AND I.itemdescription IN ('power range', 'power screw driver')
)
我为相似之处道歉,但他们是不同的,诚实的哈哈。在我的第二次选择中,IN不会被否定,我通过命名来确保在每个选择中引用相同的供应商。