MySQL内に以下のようなテーブルが2つあります。
user
-user_id (primary key+auto inclse)
-login_date (datetime)
-state (int)
order
-order_id (primary key+auto inclse)
-expire_date (datetime)
login_dateはログインした時に毎回current dateにupdateされます。
expire_dateには予めそれぞれ日時が指定されています。
login_dateがexpire_dateを越えている場合、table1のstateに1という数字を入れたいのですが
どうすればよいでしょうか。
サンプルソース等があると助かります。
宜しく御願いします。
MySQL4.1 以降限定。
UPDATE user SET state = 1 WHERE login_date > ANY ( SELECT expire_date FROM order WHERE order.order_id = user.user_id );
user テーブルと order テーブルの関係性がわからんので、取りあえずプライマリーキーで条件付けている。
ほかの条件があるなら、「 order.order_id = user.user_id 」のところを書き換えればOK。
MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.4.2.3 ANY、IN、SOME とともに使用したサブクエリ
なるほど!
解決しました!ありがとうございます!!
MySQLで条件(?)をかけてあげればいいんですね。
php内でUNIX Dateに変換して色々いじって、結局できなかったのでご相談したのでした。
ありがとうございました。