[pgsql-jp: 31688] Re: 更新処理時に比較

Keiji Mitsubuchi keiji @ nwco.com
2003年 12月 3日 (水) 11:58:36 JST


自己レスです
よく読むと、

update usr_table set max_point=$point where usr_id=$uid AND max_point <
$point
update usr_table set total_point=total_point+$point,count=count+1 where
usr_id=$uid

もしくは
select * from usr_table where usr_id=$uid
で
PHPで$max_pointを設定して、
update usr_table set
total_point=total_point+$point,count=count+1,max_point=$max_point where
usr_id=$uid

とするのを
簡略化したいということですね
できるのかな?

> 三淵@NWC
>
> テーブルの構造がわからないので
> 適当ですがPHPで
>
> $sql="update usr_table set max_point=$point where usr_id=$uid AND
max_point
> < $point";
>
> てなかんじかな?
> はずしていたらすみません。
> 検証していないので
> エラーの可能性もありますが・・・
> ご参考まで。
>
> ----- Original Message ----- 
> From: "mos_pgml" <angel @ cosmos-inc.net>
> To: <pgsql-jp @ ml.postgresql.jp>
> Sent: Wednesday, December 03, 2003 11:00 AM
> Subject: [pgsql-jp: 31684] 更新処理時に比較
>
>
> > こんにちはmosです。
> >
> > ゲーム結果の集計テーブルを作っております。
> > (ゲームID, 最高得点, 得点合計, 人数)
> > このテーブルを利用してゲーム毎に最高点と平均点を取ろうとしてます。
> >
> > ユーザからのゲーム結果の登録は、現在、複数回のクエリーを利用して実現でき
て
>> > るのですが、これを一度のクエリーで処理できるものなのでしょうか?
> > お知恵を拝借したく。
> >
> > 現在の処理
> >     1.テーブルロック
> >     2.現在値をセレクト
> >     3.(最高得点と比較:PHPで)
> >     4.更新
> >     5.コミット
> >
> > 希望する処理
> >     1.更新(登録する得点が最高点を超える場合は最高点カラムも更新)
> >
> >
> >
>




pgsql-jp メーリングリストの案内