id item_id customer_id apply_date unit_price 1 1 1 2019-9-1 200 2 1 1 2020-9-1 50 3 2 1 2019-9-1 150 4 2 1 2020-9-1 50
というデータから、id 2,4 を取り出すには valid0 でできますが、これですと未だ適用になっていないデータを取り出してしまいます。
valid1を試した所一つもhitしませんでした。(そりゃそうだ)
valid2,valid3では 1,2,3,4全てが取り出されてしまいました。
1,3を抜き出すSQL、できればActiveRecord_Relationは可能でしょうか
scope :valid0 , ->(date=Date.today){ where("not exists (select 1 from prices as p2 where p2.customer_id = prices.customer_id and p2.item_id = prices.item_id and p2.apply_date > prices.apply_date)") } scope :valid1 , ->(date=Date.today){ where("not exists (select 1 from prices as p2 where p2.customer_id = prices.customer_id and p2.item_id = prices.item_id and p2.apply_date > prices.apply_date)").where("p2.apply_date <= ?",date) } scope :valid2 , ->(date=Date.today){ where("not exists (select 1 from prices as p2 where p2.customer_id = prices.customer_id and p2.item_id = prices.item_id and p2.apply_date > prices.apply_date ane p2.apply_date <= ?)",date)} } scope :valid3 , ->(date=Date.today){ where("not exists (select 1 from prices as p2 where p2.customer_id = prices.customer_id and p2.item_id = prices.item_id and p2.apply_date > prices.apply_date ane prices.apply_date <= ?)",date)} }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。