-1

Products と sales の 2 つのテーブルがあります。製品テーブルでは、すべてのユーザーが製品を追加します。販売が行われると、その製品を追加したユーザーを含む製品に関するすべての情報で販売テーブルが更新されます。

製品表

id|Product Name|User|Price|Date

売上表

id|Product Name|Quantity|Seller|Price

売り手とユーザーが同じ値を持つ場合

私の質問は、製品を表示するときに、より多くの製品を販売するユーザー、彼のすべての製品を一番上にし、製品テーブルに製品を持っているが販売していない他のユーザーを一番下にする必要があるということです。

4

1 に答える 1

3

したがって、これはテーブル名と列名の仮定のみです。

SELECT   a.UserID, 
         Count(a.ProductID) as TotalCount
  FROM   Sales a INNER JOIN Products b
           ON a.ProductID = b.ProductID
GROUP BY a.UserID
ORDER BY TotalCount desc

UserID は製品を販売する人の ID
ProductIDは製品の ID であり、2 つのテーブルを接続するフィールドです
COUNT()は、すべてのユーザーのレコードをカウントする Aggregate 関数の名前です。

PS: 質問にテーブルのスキーマを含めてください。

更新 1

その場合は、次を使用する必要がありますLEFT JOIN

  SELECT a.ProductName,
         COUNT(b.Seller) as TotalSellerCount
    FROM Products a LEFT JOIN Sales b
       ON a.User = b.Seller
GROUP BY a.ProductName
ORDER BY TotalSellerCount desc
于 2012-06-19T08:46:51.980 に答える