我正在尝试创建嵌套(并且必须是嵌套的)SQL查询以产生以下结果:
“让所有与任何客户享有相同折扣的客户 在达拉斯或伦敦“。
这是包含四个表的数据库:
DATABASE CAP 2:
Customers
cid name city discount
c001 Tiptop Duluth 10.00
c002 Basics Dallas 12.00
c003 Allied Dallas 8.00
c004 ACME Duluth 8.00
c005 WeylandYutani Acheron 0.00
c006 ACME Kyoto 0.00
Orders
ordno mon cid aid pid qty dollars
1011 jan c001 a01 p01 1000 450.00
1013 jan c002 a03 p03 1000 880.00
1015 jan c003 a03 p05 1200 1104.00
1016 jan c006 a01 p01 1000 500.00
1017 feb c001 a06 p03 600 540.00
1018 feb c001 a03 p04 600 540.00
1019 feb c001 a02 p02 400 180.00
1020 feb c006 a03 p07 600 600.00
1021 feb c004 a06 p01 1000 460.00
1022 mar c001 a05 p06 400 720.00
1023 mar c001 a04 p05 500 450.00
1024 mar c006 a06 p01 800 400.00
1025 apr c001 a05 p07 800 720.00
1026 may c002 a05 p03 800 740.00
Agents
aid name city percent
a01 Smith New York 6
a02 Jones Newark 6
a03 Brown Tokyo 7
a04 Gray New York 6
a05 Otasi Duluth 5
a06 Smith Dallas 5
a08 Bond London 7
Products
pid name city quantity priceUSD
p01 comb Dallas 111400 0.50
p02 brush Newark 203000 0.50
p03 razor Duluth 150600 1.00
p04 pen Duluth 125300 1.00
p05 pencil Dallas 221400 1.00
p06 folder Dallas 123100 2.00
p07 case Newark 100500 1.00
p08 clip Newark 200600 1.25
我遇到的问题是,能够抓住同等折扣的客户,但我该怎么做?任何帮助,将不胜感激。
这是我到目前为止所做的:
SELECT name FROM customers WHERE cid in (
SELECT cid from customers where discounts in...
任何帮助将不胜感激。
答案 0 :(得分:1)
只需获得这些城市所有客户的折扣,并选择具有相同折扣的所有客户。
SELECT *
FROM Customers
WHERE discount in (SELECT discount FROM Customers WHERE city in ("Edmonton", "Calgary"));
向艾伯塔省大声喊道。
答案 1 :(得分:1)
根据我的评论添加一些说明。
使用如下查询:
select *
from customers
where discount in (
select DISTINCT discount
from customers
where city in ('Dallas', 'London')
)
and city not in ('Dallas', 'London');
示例:http://sqlfiddle.com/#!9/055d7/4
让我们打破这个(注意:我增加了折扣)。内部查询select DISTINCT discount from customers where city in ('Dallas', 'London')
为我们提供了达拉斯和伦敦客户的折扣。我们只选择不同的信息。
然后,我们会询问来自达拉斯和伦敦的客户的所有记录。此外,我们只想要那些与内部查询匹配的折扣记录。