我对我的作业提出了一个让我困惑的问题。
列出没有的每个供应商标识号和供应商名称 供应'功率范围'和'动力螺丝刀'。
因此,我们有供应商,供应商目录和库存表。
供应商
vid(供应商ID - 主键) 供应商名称 地址
Vendorcatalog
vid(供应商ID) itemno(项目编号)
两者都是主键。
Inventorydes
itemno(主键) itemdescription
当前查询
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。
结束输出应为:
v1 |这个供应商的名字
v2 |这个供应商的名字
v3 |这个供应商的名字
只有4家供应商,第4家供应商是提供功率范围和动力螺丝刀的供应商。
答案 0 :(得分:1)
未经测试但这应该有效:
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')
)
答案 1 :(得分:0)
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')
)