在嵌套SQL语句中使用OR运算符

问题描述 投票:0回答:3

我有一个数据库,其中包含供应商,他们所出售的商品以及他们的位置。

我需要针对销售一定数量产品的供应商来搜索基于特定地区(例如州)的供应商。

此问题的示例是:

可以提供多个商品或位于伊利诺伊州的所有供应商的全名是什么?

如果我可以使用两个SQL查询,这将很容易(但是对于这个问题我不能)。>>

假定使用的表之间没有连接,我的解决方案不正确,但这是我尝试的方法

select 
cs.vendor_id, name, count(cs.PRODUCT_ID) 
from 
grocery.vendor 
where 
va.state_territory_province = 'Illinois' 
group by 
(cs.vendor_id)
or /# error found here #/
having 
(count(cs.product_id)>1);

第1行出现错误:ORA-00933:SQL命令未正确结束

如果我分别尝试每个,都会得到这些结果

使用Illonois

select 
cs.vendor_id, v.name, count(cs.PRODUCT_ID) 
from 
grocery.vendor v 
inner join grocery.vendor_address va 
on (v.vendor_id = va.vendor_id) 
inner join grocery.can_supply cs 
on (v.vendor_id = cs.vendor_id) 
where 
va.state_territory_province = 'Illinois' 
group by 
(cs.vendor_id, v.name);

VENDOR_ID名称COUNT(CS.PRODUCT_ID)


33 Drinks R Us                       1
35 Jungle Man                        1
34 Poland Spring                     1

使用产品数量

select 
cs.vendor_id, v.name, count(cs.PRODUCT_ID) 
from grocery.vendor v 
inner join grocery.vendor_address va 
on (v.vendor_id = va.vendor_id) 
inner join grocery.can_supply cs 
on (v.vendor_id = cs.vendor_id) 
group by (cs.vendor_id, v.name) 
having(
count(cs.product_ID)>1);

VENDOR_ID名称COUNT(CS.PRODUCT_ID)


 8 Orgo Home Farm                    3
17 Wellness                          2
21 Wily Wonka                        4
27 Camel                             3
29 Supplies R Us                     5
13 Clean Me Please                   5
15 Oral Care Inc                     2
31 Cheese Cake Factory               2
37 Crunchy                           2
 1 Moo Moo Milk Farm                 4
 4 Haagen Daz                        3
26 Beer Inc                          4
 6 Sailor Bob                        3
10 Dawn                              2
16 SPAM                              2
18 Wonder inc                        3
 5 Butcher Mat                       3
 9 Soda Forever                      4
14 Wash Shampoo Inc                  4
24 Huntz                             4
20 Hershey                           3
22 Bake Me Inc                       5
30 We Make Pizza                     2
36 Taste Treat                       3
 7 Monkey Paradise                   6
19 Puff                              5

选择了26行。

基本上,我想将这两个查询合并为一个。有没有办法将它们嵌套在一起?

我有一个数据库,其中包含供应商,他们所出售的商品以及他们的位置。我需要搜索基于特定地点(例如州)的供应商或出售一定数量的供应商...

sql oracle where-clause having
3个回答
2
投票

我倾向于这样做:


1
投票

您应该能够将两个条件都放在HAVING子句中:


1
投票

如何对两个查询使用UNION子句?

© www.soinside.com 2019 - 2024. All rights reserved.