簡體   English   中英

從兩個表中選擇頂部和順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM