可能的双重嵌套 sql 查询?
Possible double nested sql query?
我正在尝试创建一个嵌套的(而且它必须是嵌套的)SQL 查询以产生以下结果:
"Get all customers who have the same discount as that of any customers
in Dallas or London".
这是包含四个表的数据库:
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...
如有任何帮助,我们将不胜感激。
只需获取那些城市中所有客户的折扣和select具有相同折扣的所有客户。
SELECT *
FROM Customers
WHERE discount in (SELECT discount FROM Customers WHERE city in ("Edmonton", "Calgary"));
向阿尔伯塔大声疾呼。
只是根据我的评论添加一些说明。
像这样使用查询:
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')
为我们提供了来自达拉斯和伦敦的客户获得的折扣。我们只是选择不同的信息。
然后,我们要求不在达拉斯和伦敦的客户提供所有记录。此外,我们只需要那些折扣与内部查询相匹配的记录。
我正在尝试创建一个嵌套的(而且它必须是嵌套的)SQL 查询以产生以下结果:
"Get all customers who have the same discount as that of any customers in Dallas or London".
这是包含四个表的数据库:
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...
如有任何帮助,我们将不胜感激。
只需获取那些城市中所有客户的折扣和select具有相同折扣的所有客户。
SELECT *
FROM Customers
WHERE discount in (SELECT discount FROM Customers WHERE city in ("Edmonton", "Calgary"));
向阿尔伯塔大声疾呼。
只是根据我的评论添加一些说明。
像这样使用查询:
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')
为我们提供了来自达拉斯和伦敦的客户获得的折扣。我们只是选择不同的信息。
然后,我们要求不在达拉斯和伦敦的客户提供所有记录。此外,我们只需要那些折扣与内部查询相匹配的记录。