[英]Select top and order from two tables
我正在做一個電子商務市場。 在這個市場上有很多賣家在賣東西。 對於每個賣方,我想顯示一個“最佳賣方”列表。
數據庫在SQL Server中。 在這種情況下,有2個主表:
表1:存儲每個訂單的訂購產品。 字段包括賣方ID,訂單ID,產品ID和數量。
表2:產品主表。 字段包括ProductID,...
如何查詢以獲得訂單最多的前10個產品? 我下面的SQL似乎不起作用...
SELECT TOP (10) SUM(d.Quantity) AS total, d.ProductID, p.Title
From OrderDetails d, Products p
WHERE d.SellerID = 'xxx' AND
d.ProductID = p.ProductID
GROUP by d.ProductID
ORDER BY total DESC
任何幫助深表感謝。 謝謝!
select *, d.s
from products p
inner join
(
select top 10 productid, sum(quantity) as s
From OrderDetails
group by productid
order by sum(quantity) desc
)
d on d.productid = p.productid
請參閱此SQLFiddle示例
這只是一個猜測。 如果您想要“最多訂單”,那么我寧願計算訂單而不是求和。
SELECT TOP 10
COUNT(d.OrderID) AS total, d.ProductID, p.Title
FROM OrderDetails d
INNER JOIN Products p ON d.ProductID = p.ProductID
WHERE d.SellerID = 'xxx'
GROUP by d.ProductID, p.Title
ORDER BY COUNT(d.OrderID) DESC
我還解決了什么:
GROUP BY缺少一列。 您必須為SELECT子句中的每個列命名,但不能在聚合函數中命名。
在ORDER BY子句中,您必須像在SELECT子句中一樣命名它。 別名在SQL Server中不能很好地工作。
使用了INNER JOIN語法,這種語法不太容易忘記忘記在WHERE子句中指定連接。
這不是因為您使用哪種數據庫,而是聚合函數。 關於stackoverflow中的這個問題有很多問題。 請搜索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.