编写一个关于只有一个商店的所有订单的客户的SQL查询

时间:2017-10-11 04:41:38

标签: sql

我有以下关系方案:

  • 商店(商店ID,商店名称)
  • 玩具(玩具ID,名称)
  • 客户(客户ID,姓名)
  • 订单(订单ID,客户ID)
  • Olines(订单ID,商店ID,玩具ID)

我想在SQL中编写一个查询来查找所有客户的客户ID,这些客户的所有订单只有一个商店,并且该商店不能是“Toys R Us”。

我是SQL的新手,不知道如何解决这个问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

这可能会对你有所帮助。只需按照您的要求替换表名和列名。

select a.customerid 
from (
    select or.customerid,st.storeid,count(*) count 
    from Order or, Onlines on, Store st 
    where or.orderid=on.orderid and on.storeid=st.storeid and st.store_name!='Toy R Us' 
    group by or.customerid,st.storeid) a 
where a.count=1;

答案 1 :(得分:0)

您可以为此

使用exists子句
; With cte as(
Select distinct name , c.[Customer ID],s.[store Id] 
From customer c  join order o
On c.[Customer ID]=o.[Customer ID]
Join olines l
On o.[order ID]=l.[order ID]
Join store s
On s.[store Id]=l.[store Id] and not s.[store_name]='Toys R Us')

Select * 
from cte c1 
where
 not exists(
 Select 1 
 from cte c2 
 where c2.[Customer ID]=c1.[Customer ID] and c2.[store Id]=<>c1.[store Id] 
 )