作成日順に注文されたすべての製品の価格を示すクエリを作成しました。
私が今必要としているのは、製品ごとに1行だけ、つまり製品ごとに1つの価格を返すことです。
SELECT p.product_id, p.price, p.creation_date
FROM PRICE p
INNER JOIN PRODUCT pr
ON p.product_id = pr.product_id
AND p.filter_id = 3
AND (p.store_id IN (1,2,3,4) OR p.price_type = 'A')
ORDER BY p.creation_date DESC
現在、このクエリは、いくつかの一致があるため、製品ごとにいくつかの価格を返しますが、私はそれらの最新のものだけが必要です。ORDER BY p.creation_date DESCは、リストの最初に必要な価格を示します。最初のエントリがその製品の唯一の結果になるようにします。
rownum = 1を試しましたが、クエリ全体で1つの結果しか得られません。これはOracleデータベースであることに注意してください。TOPが機能しないことがわかっている限り、LIMITについても同じことが言えます。
私はそれをグーグルで検索しましたが、この問題を正確に示す例を見つけることができません。
言及するのを忘れました:同じ製品の作成日が同じである価格がいくつかあるので、それらにも最初のエントリのみを与えるという制限が必要です