Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL--获取不销售特定项目的供应商列表_Sql_Oracle - Fatal编程技术网

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不会被否定,我通过命名来确保在每个选择中引用相同的供应商。