各サプライヤーの上位 5 つの製品を選択するサブクエリを実行しています。選択は、各サプライヤーの製品に対してランダムに行う必要があります。
このために、次のクエリを作成しました (Allen Browne の例に基づいています)。
SELECT tblProducts_temp.SupplierID, tblProducts_temp.GTIN
FROM tblProducts_temp
GROUP BY tblProducts_temp.SupplierID, tblProducts_temp.GTIN
HAVING (((tblProducts_temp.GTIN) In (SELECT TOP 5 Dupe.GTIN
FROM tblProducts_temp AS Dupe
WHERE Dupe.SupplierID = tblProducts_temp.SupplierID
ORDER BY RND(Dupe.GTIN) DESC)))
ORDER BY tblProducts_temp.SupplierID, tblProducts_temp.GTIN;
クエリはランダムな数の製品を返しますが、トップ 5 ではありません。つまり、サプライヤ X の場合、一度は 3 つの製品であり、次回はサプライヤ X の場合は 7 つの製品です。
RND 関数を使用しないクエリなので、上位 5 つだけが正常に機能します。
SELECT tblProducts_temp.SupplierID, tblProducts_temp.GTIN
FROM tblProducts_temp
GROUP BY tblProducts_temp.SupplierID, tblProducts_temp.GTIN
HAVING (((tblProducts_temp.GTIN) In (SELECT TOP 5 Dupe.GTIN
FROM tblProducts_temp AS Dupe
WHERE Dupe.SupplierID = tblProducts_temp.SupplierID
ORDER BY Dupe.GTIN DESC)))
ORDER BY tblProducts_temp.SupplierID, tblProducts_temp.GTIN;
私は本当に立ち往生しています。誰でも私を助けてください!
どうも!