2 つのテーブルがあり、1 つはトランザクション (日付付き) です。もう 1 つはパーセンテージと、それが有効になったパーセンテージの日付 (00:00:00 と仮定) を示します。このパーセンテージは、新しいパーセンテージが有効になるまで有効です。トランザクションが発生したときに有効だったパーセンテージに参加する必要があります。
transactions_table
event_date amount
2011-01-01 230
2011-02-18 194
2011-03-22 56
2011-04-30 874
percent_table
effective percent
2010-12-30 15
2011-03-05 25
2011-04-12 30
私が探している結果は次のとおりです。
event_date amount percent
2011-01-01 230 15
2011-02-18 194 15
2011-03-22 56 25
2011-04-30 874 30
私はもう試した:
SELECT t.event_date, t.amount, p.percent
FROM transactions_table AS t
LEFT JOIN percent_table AS p ON t.event_date >= p.effective
ORDER BY `t`.`event_date` DESC LIMIT 0 , 30;
それは私に、一見ランダムなパーセンテージを与えます。ランダムな日付>= p.effectiveだけでなく、最大の日付>= p.effectiveを取得する必要があるように思えます。
私は試した:
SELECT t.event_date, p.percent
FROM bedic_sixsummits_transactions AS t
LEFT JOIN bedic_sixsummits_percent AS p ON MAX(t.event_date >= p.effective)
ORDER BY `t`.`event_date` DESC LIMIT 0 , 30
しかし、MySQL は私の弱々しい試みをただ笑っただけでした。
これどうやってするの?