私はテーブルusers
にプライマリキーuserid
とdatetimeカラムpay_date
を持っています。結合アイテムの複数の行を持つテーブルへの結合
またuser_actions
というテーブルは、userid
のusers
という列と、datetime列のaction_date
を参照しています。
action_date
の後にpay_date
の後にあるuser_actions
テーブルから最も早いアクションのみを取り出して、2つのテーブルを結合したいとします。
私のような事をしようとしている:
select users.userid from users
left join user_actions on user_actions.userid = users.userid
where user_actions.action_date >= users.pay_date
order by user_actions.pay_date
しかし、明らかにそれは私に、ユーザーごとに複数の行(pay_date
日以降に発生したすべてのユーザーアクションの1)を返します。ここからどこへ行くの?
おそらく簡単な質問のように思えるのは、私はかなりt-SQLに慣れています。
んuser_ActionsテーブルはIDを持っていると仮定していますか? –
最初の解決策は(投稿のとおり)、2番目の解決策はありません。 – Quassnoi
ありがとうございます - それは私が欲しいものです。そのような行動が存在しないユーザーを維持することは可能ですか?私は 'user_actions'テーブルから一つの値(' ua.action_date')を取り出したいだけです。そのようなアクションが存在しなければnullにしたいと思います。あなたが時間を持っていない場合でも心配はありません、私の質問に完全に答えたので、私はあなたを+1しました。 –