2017-11-04 39 views
0

我想根據W3Schools.com SQL數據庫解決此問題。到目前爲止,我想出了以下內容,其中顯示先前訂購同一產品的客戶的名稱和產品。包括訂購與客戶訂購的相同產品的總數,我遇到了問題。對於以前訂購過相同產品的客戶,請顯示訂購相同產品的客戶名稱,產品數量和總數

select customername, products.productid, productname 
from orderdetails, orders, customers, products 
where orderdetails.orderid=orders.orderid AND 
     orders.customerid=customers.customerid AND 
     orderdetails.productid=products.productid 
group by customername, products.productid, productname 
HAVING COUNT(*) > 1 
order by customername; 

回答

0

您已經有客戶的結果查詢。將其移動到子查詢並加入到自身中

SELECT * 
FROM 
    (select customername, products.productid, productname, COUNT(*) as cnt 
    from orderdetails, orders, customers, products 
    where orderdetails.orderid=orders.orderid AND 
      orders.customerid=customers.customerid AND 
      orderdetails.productid=products.productid 
    group by customername, products.productid, productname 
    HAVING COUNT(*) > 1) c1 
    INNER JOIN 
    (select customername, products.productid, productname, COUNT(*) as cnt 
     from orderdetails, orders, customers, products 
     where orderdetails.orderid=orders.orderid AND 
      orders.customerid=customers.customerid AND 
      orderdetails.productid=products.productid 
     group by customername, products.productid, productname 
     HAVING COUNT(*) > 1) c2 
    ON c1.productId=c2.productId and c1.productname=c2.productname 

order by c1.customername 
相關問題