2012-07-07 394 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