2009-09-03 154 views
0

这是DB模式:帮助SQL查询

Books (bookid, title, author, year) 
Customers (customerid, name, email) 
Purchases (customerid, bookid, year) 
Reviews (customerid, bookid, rating) 
Pricing (bookid, format, price) 

我如何找客户(展示自己的姓名和电子邮件地址)谁在2003年一年内都购买一个以上的书吗?

谢谢!

回答

2

非常酷似你的英语语言问题的措辞...只是转换成SQL ...

Select * From Customers C 
Where (Select Count(*) From Purchases 
     Where customerid = C.customerid 
      And Year = 2003) > 1 
+0

和你woorks为好。 +1给你。 – David 2009-09-03 19:24:38

5
SELECT name, email, COUNT(p.customerId) as purchases_in_2003 
FROM Customers c 
INNER JOIN Purchases p ON c.customerId = p.customerId 
WHERE p.year = 2003 
GROUP BY name, email 
HAVING purchases_in_2003 > 1 
+1

您忘记了GROUP BY子句,但除此之外这是迄今为止的最佳答案 – kurosch 2009-09-03 19:22:58

+0

谢谢,更新回答 – soulmerge 2009-09-03 19:23:42

+0

删除了我自己的答案,因为我看错了问题,并且您答对了。 +1给你。 – David 2009-09-03 19:24:05

0

一个比较另类:

select 
    cu.name 
,cu.email 
,count(*) as books_purchased 
from 
    customers cu 
,purchases pu 
where cu.customerid = pu.customerid 
    and pu.year = 2003 
group by 
    cu.name 
,cu.email 
having 
    count(*) > 1