2012-07-07 395 views
0

使用Chinook Test Database我写这个SQL语句来显示有两个特定客户订购的所有曲目:如何使用SQL查找双打?

SELECT inv.BillingCity,cus.LastName,tra.Name 
     FROM invoice AS inv 
     JOIN customer AS cus ON inv.CustomerId=cus.CustomerId 
     JOIN invoiceline inl ON inv.InvoiceId=inl.InvoiceId 
     JOIN track tra ON tra.TrackId=inl.TrackId 
     WHERE cus.LastName IN ('Schneider','Schröder') 
     ORDER BY inv.BillingCity,cus.LastName,tra.Name 

我看到有,是由一个客户订购两次轨道:

enter image description here

我该如何编写一条SQL语句来查找这样的双打,即“返回一个客户多次订购的所有曲目”?

回答

2

试试这个:

SELECT cus.CustomerId,tra.Name,COUNT(cus.CustomerId) AS tot 
     FROM invoice AS inv 
     JOIN customer AS cus ON inv.CustomerId=cus.CustomerId 
     JOIN invoiceline inl ON inv.InvoiceId=inl.InvoiceId 
     JOIN track tra ON tra.TrackId=inl.TrackId 
     GROUP BY cus.CustomerId,tra.Name 
     HAVING tot > 1