3 つのテーブルにまたがる複数の結合を含むクエリがあるとします。
SELECT
main_data.id,
main_data.dt,
main_data.seq_num,
main_data.sale_amt,
main_data.sale_cd,
promo.promo_cd,
payment.card,
payment.priority
FROM
main_data
INNER JOIN promo
ON promo.id = main_data.id
AND main_data.dt >= promo.start_dt
AND main_data.dt <= promo_end_dt
INNER JOIN payment
ON payment.sale_cd = main_data.sale_cd
AND payment.card = main_data.card
WHERE
main_data.dt BETWEEN '2013-10-12' AND '2013-10-12'
基本的に、販売は支払い方法 ( payment
) とプロモーション ( promo
) に関連付けられています。プロモーション コードを対象となる支払いにマッピングする (1 対多の関係) には、いくつかの問題があります。
この時点で、 からの重複レコードが存在する可能性がありますmain-data
。したがって、payment.priority
値が最も低い を使用する必要があります。そのフィールドの値が最も低い行だけを抽出するにはどうすればよいですか? これをサブクエリとしてネストしようとしましたが、正しく機能させることができませんでした。データベース自体は完全に静的であり、スキーマを変更することはできません。