2017-11-04 37 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 
相关问题