1

我如何编写一个有top5和inner join的sql语句?

目前,这就是我所拥有的:

$query = "SELECT OrderItem.ProductCode , Product.ProductName, 
                 count(OrderItem.OrderID) as total_orders 
          FROM `OrderItem` 
          GROUP BY ProductCode 
          ORDER BY total_orders DESC LIMIT 5 
          INNER JOIN Product ON Product.ProductCode = OrderItem.ProductCode";

但它不起作用。

表:产品表有列:

  ProductCode, ProductName, Cat, Qty, CostPr, RetailPr, VendorID

OrderItem 表有列:

  OrderID, ProductCode, UnitPr, Qty,TotalPr

我的目标是在提交的订单中显示前 5 名产品的产品代码和产品名称。请帮忙。谢谢。

4

2 回答 2

1

AJOINFROM子句的一部分,应该出现在你的GROUP BY:

SELECT 
    OrderItem.ProductCode, 
    Product.ProductName, 
    count(OrderItem.OrderID) as total_orders 
FROM 
    OrderItem 
    INNER JOIN Product 
        ON Product.ProductCode = OrderItem.ProductCode
GROUP BY OrderItem.ProductCode, Product.ProductName 
ORDER BY total_orders DESC LIMIT 5 
于 2012-07-25T15:55:10.103 回答
0
select ol.ProductCode, ol.total_orders, p.ProductName
from (
    select ProductCode, count(OrderID) as total_orders
    from OrderItem
    group by ProductCode
    order by total_orders desc LIMIT 5
) ol
inner join Product p on p.ProductCode = ol.ProductCode
于 2012-07-25T15:56:05.000 回答