次のテーブルがあります
Actions: actionID, time, type
States: stateID, time, type
アクションが実行された時点での現在の状態を調べる必要があります。
だから私は次のようなものから始めました
SELECT actions.actionID, states.stateID
FROM actions, states
WHERE states.time < actions.time
これにより、特定のアクションが発生する前に存在していたすべての状態を含む結果テーブルが得られます。しかし、アクションの前の LAST 状態だけが必要です。
したがって、max(states.stateID) に基づく何らかの GROUP BY が必要ですが、正直なところ、これを解決する方法がわかりません。
編集
したがって、アクションテーブルにこれが含まれている場合:
actionID time type
1 '2012-10-30 02:05:00' 100
2 '2012-10-30 02:11:00' 200
そして状態テーブルにはこれが含まれています:
stateID time type
11 '2012-10-30 02:00:00' A
12 '2012-10-30 02:10:00' B
13 '2012-10-30 02:15:00' A
次の結果が欲しいです。
actionID stateID
1 11 // Because before action 1, the state that prevailed was 11
2 12 // Because before action 2, the state that prevailed was 12