2012-02-23 14 views
0

私は少し異なる情報を表示するために微調整したいクエリがあります。 現在、ほとんどのコンバージョンが上位にある商品でランク付けされた商品をすべてのオーダーに表示します。ここで はクエリです:私は、結果として持っている何名前によるSQLクエリの照会

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 

は次のとおりです。

enter image description here

私はカテゴリごとに一つだけの時間を持つことができるようにしたい、例えば「プログラマー&モジュール」カテゴリは、そのカテゴリ内のすべてのproductvariantIDの合計を含む1つのレコードのみである必要があります。最初のフィールドも避けることができます。なぜなら、複数の製品バリアントがある場合、クエリでは1つだけを表示する必要があるからです。私が本当に必要とするのは、各カテゴリの数とcategoryIDです。その後

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

あなたはそれが動作するあなたのSELECTに必要な変更を行います。

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

試してみてください。事前に おかげで、Laziale

+0

クエリが結果セットと一致しません。それは何ですか(No Column Name)? – StingyJack

+0

@StingyJackクエリが更新されました。申し訳ありません – Laziale

+1

質問の件名が内容と一致しません。注文を変更する必要がありますか? –

答えて

1

私は問題があなたの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 
+0

あなたの答えをお寄せいただき、ありがとうございます。 – Laziale

2

だけを選択してグループ化の両方からバリアントと商品コードを削除します。

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 
関連する問題