UNION ALLを使用して2つのテーブルから1つに結果を返すクエリがあります。これは、必要に応じてすべて機能します。ただし、返されたデータセットに対してGROUPBYとORDERBYを実行する必要がありますが、多くのエラーが発生し、解決方法がわかりません。
これが私のクエリです:
SELECT ProductID, Quantity
FROM BasketItems
UNION ALL
SELECT ProductID, Quantity
FROM OrderItems
これにより、次のような結果セットが返されます。
ProductID Quantity
15 2
20 2
15 1
8 5
5 1
GROUP BY
次に、ProductID
フィールドでを実行し、最後にフィールドでORDER BY DESC
を実行しQuantity
ます。したがって、最終出力では、この特定の結果セットは最終的に次のようになります。
ProductID
8
15
20
5
その後、通常どおり、この結果セットに対してクエリを実行できます。
編集:
上で述べたように、しかし十分に暗示されていないのは、返された結果に対してクエリを実行する必要があるということです。これは、ORDER BY句を持つ一連の結果に対してクエリを実行できないため、機能しません(私が収集した限り)エラーリストから)
問題に関する詳細情報が必要な場合は、次のとおりです。
この結果セットから、関連する製品テーブルから製品を取得したいと思います。
SELECT * FROM Products WHERE ID IN (
SELECT ProductID
FROM
(
SELECT ProductID, Quantity
FROM BasketItems
UNION ALL
SELECT ProductID, Quantity
FROM OrderItems
) v
GROUP BY ProductID
ORDER BY SUM(Quantity) DESC
)
ただし、次のエラーが発生します。TOP、OFFSET、またはFOR XMLも指定されていない限り、ビュー、インライン関数、派生テーブル、サブクエリ、および一般的なテーブル式ではORDERBY句が無効です。
製品の出力は、サブクエリで返される順序である必要があります(数量別)