0

別の情報を表示するために少し調整したいクエリがあります。現在、私のクエリは、コンバージョン数が最も多い製品でランク付けされた製品を含むすべての注文を取得します。クエリは次のとおりです。

   SELECT nopv.ProductVariantID, COUNT(nopv.ProductVariantID), p.ProductId, c.CategoryID, c.Name FROM Nop_OrderProductVariant nopv
INNER JOIN Nop_ProductVariant npv
ON nopv.ProductVariantID = npv.ProductVariantId
INNER JOIN Nop_Product p
ON npv.ProductID = p.ProductId
INNER JOIN Nop_Product_Category_Mapping npcm
ON p.ProductId = npcm.ProductID
INNER JOIN Nop_Category c 
ON npcm.CategoryID = c.CategoryID
GROUP BY nopv.ProductVariantID, p.ProductId, c.CategoryID, c.Name
HAVING COUNT(*) > 0
ORDER BY COUNT(nopv.ProductVariantID) DESC

結果として私が持っているものは次のとおりです。

ここに画像の説明を入力

たとえば、「プログラマーとモジュール」カテゴリは、そのカテゴリのすべての productvariantID の合計を含む 1 つのレコードのみにする必要があります。複数の productvariant がある場合、クエリは 1 つだけを表示する必要があるため、最初のフィールドも避けることができます。本当に必要なのは、各カテゴリの数とカテゴリ ID です。前もって感謝します、 ラツィアーレ

4

2 に答える 2

2

Variant と ProductID を select と Group By の両方から削除するだけです。

   SELECT
     COUNT(nopv.ProductVariantID) ,
     c.CategoryID ,
     c.Name
   FROM
     Nop_OrderProductVariant nopv
   INNER JOIN Nop_ProductVariant npv
   ON
     nopv.ProductVariantID = npv.ProductVariantId
   INNER JOIN Nop_Product p
   ON
     npv.ProductID = p.ProductId
   INNER JOIN Nop_Product_Category_Mapping npcm
   ON
     p.ProductId = npcm.ProductID
   INNER JOIN Nop_Category c
   ON
     npcm.CategoryID = c.CategoryID
   GROUP BY
     c.CategoryID ,
     c.Name
   HAVING
     COUNT(*) > 0
   ORDER BY
     COUNT(nopv.ProductVariantID) DESC
于 2012-02-23T17:51:45.523 に答える
1

問題はあなただと思いますgroup by

GROUP BY nopv.ProductVariantID, p.ProductId, c.CategoryID, c.Name

試す:

GROUP BY c.CategoryID, c.Name -- c.Name is here since you probably can't select it otherwise

次に、必要な変更を加えて、機能するSELECTようにします。

だからこのようなもの:

SELECT COUNT(nopv.ProductVariantID), c.CategoryID, c.Name
FROM Nop_OrderProductVariant nopv
INNER JOIN Nop_ProductVariant npv
ON nopv.ProductVariantID = npv.ProductVariantId
INNER JOIN Nop_Product p
ON npv.ProductID = p.ProductId
INNER JOIN Nop_Product_Category_Mapping npcm
ON p.ProductId = npcm.ProductID
INNER JOIN Nop_Category c 
ON npcm.CategoryID = c.CategoryID
GROUP BY c.CategoryID, c.Name
HAVING COUNT(*) > 0
ORDER BY COUNT(nopv.ProductVariantID) DESC
于 2012-02-23T17:49:35.460 に答える