MySQLとPHPのdatetimeと条件操作(?)について質問です。


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という数字を入れたいのですが
どうすればよいでしょうか。


サンプルソース等があると助かります。

宜しく御願いします。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2008/03/22 16:13:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント80pt

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 とともに使用したサブクエリ

id:zipzap-wave

なるほど!

解決しました!ありがとうございます!!

MySQLで条件(?)をかけてあげればいいんですね。

php内でUNIX Dateに変換して色々いじって、結局できなかったのでご相談したのでした。


ありがとうございました。

2008/03/22 15:34:07

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません