0

私のテーブルは、次のようなすべての注文履歴で構成されています。

table: orderhistory

OrderID       ProductID       CustomerID        Quantity        
     1                   4                       1                        1
     1                   5                       1                        2
     1                   6                       1                        1
     2                   4                       2                        1
     2                   3                       2                        1
     2                   5                       2                        1

OrderIDとProductIDは主キーです。
したがって、製品4に関連する購入履歴は、製品3、5、および6で構成されます。また、製品5は、1回の注文で4と一緒に2回表示されるため、他のレコードよりも前にある必要があります。単一のクエリを使用してその情報を取得するにはどうすればよいですか?

望ましい結果:(製品4の関連履歴のクエリ)

ProductID       Freq       
     5                   2
     6                   1
     3                   1
4

2 に答える 2

1
select ProductID, count(ProductID) as Freq from orderhistory group by ProductID;

必要に応じてどこにでも配置できます。

select ProductID, count(ProductID) as Freq from orderhistory 
where ProductID in (5,6,3) group by ProductID;

また

select ProductID, count(ProductID) as Freq from orderhistory 
where ProductID != 4 group by ProductID;
于 2012-07-09T09:45:57.277 に答える
1

次のクエリは、必要なデータをフェッチします。

SELECT 

      DISTINCT PRODUCTID

 FROM 

      [ORDERHISTORY] oh

 WHERE

      oh.OrderID IN (SELECT ORDERID FROM ORDERHISTORY WHERE PRODUCTID = 4 )
于 2012-07-09T09:42:44.567 に答える