次の2つのテーブルがあります。
- 食材(ID、名前)
- 材料価格 (id、材料 ID、価格、作成時)
1 つの材料に多くの価格が設定される可能性があります。原材料ごとに入力された最新の価格を取得する最良の方法は何ですか? サブセレクトで簡単にできることはわかっていますが、もっと効率的な方法があるかどうか知りたいです。
次の2つのテーブルがあります。
1 つの材料に多くの価格が設定される可能性があります。原材料ごとに入力された最新の価格を取得する最良の方法は何ですか? サブセレクトで簡単にできることはわかっていますが、もっと効率的な方法があるかどうか知りたいです。
私はこのようにします:
SELECT i.*, p1.*
FROM ingredients i
JOIN ingredient_prices p1 ON (i.id = p1.ingredient_id)
LEFT OUTER JOIN ingredient_prices p2 ON (i.id = p2.ingredient_id
AND p1.created_at < p2.created_at)
WHERE p2.id IS NULL;
これは、p1 より新しい価格 (p2) を検索します。見つからない場合は、p1 が最新の価格である必要があります。
特定の日付に複数の価格が存在する可能性がある場合は、重複を除外する別の用語が必要です。