0

販売したすべてのアイテムを保持するテーブルがあります。注文には複数のアイテムが含まれる場合があります。

注文に含まれる商品が 1 つだけの場合に、最も人気のある商品と色の組み合わせを見つけたいです。これを1つのMySQLステートメントで見つけることができるかどうか疑問に思っています(ネストされたSelectを使用している可能性があります)。これまでにいくつかのことを試しましたが、成功していません。

ProductName | Color | OrderNum | 
--------------------------------
productA    | black | 1
productA    | black | 1
productA    | black | 2
productA    | black | 3
productA    | black | 4
productA    | black | 4
productA    | black | 5

それで "

SELECT COUNT(ProductName), ProductName WHERE ~~COUNT(OrderNum)=1~~ GROUP BY ProductName, Color

次のように表示されます。

COUNT(ProductName) | ProductName | Color
      3            | ProductA    | black

実際、私は多数の製品と 50 以上の色を持っています。

私が試したこと:

SELECT COUNT(ProductName), ProductName,Color, 
       (SELECT COUNT(OrderNum) FROM Items GROUP BY OrderNum) AS itemcount 
FROM Items WHERE 1 
GROUP BY ProductName,Color HAVING itemcount = 1

SELECT COUNT( ProductName ) , ProductName, Color
FROM Items
WHERE (SELECT COUNT( OrderNum ) AS itemcounts
       FROM Items GROUP BY OrderNum
) =1
GROUP BY ProductName

--「サブクエリは複数の行を返します」

ご協力いただきありがとうございます。

4

2 に答える 2

2

クエリ:

SQLFIDDLE例

SELECT
COUNT(*) as count, i.ProductName, i.Color
FROM ITems i
WHERE 1 = (SELECT COUNT( OrderNum ) AS itemcounts
           FROM Items 
           WHERE OrderNum = i.OrderNum
           )
GROUP BY ProductName, Color

結果:

| COUNT | PRODUCTNAME | COLOR |
-------------------------------
|     3 |    productA | black |
于 2012-12-06T12:13:34.580 に答える
0

これを試して:

SELECT ProductName, color, COUNT(ProductName) 
FROM (SELECT ProductName, color, orderNum FROM Items 
      GROUP BY ProductName, orderNum HAVING COUNT(orderNum)=1) AS A
于 2012-12-06T12:06:44.207 に答える