人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MYSQLについて質問です。

データをグループ化して、
その後にデータ変更するとグループ化されたデータに
同じ変更が反映されるようにしたいと考えています。

例えば
テーブル:TEST
項目:DATA1 DATA2
の場合に

DATA2の値が同じものをグループ化して
その後に、DATA1の値を変えるとグループ化されたデータも一緒に変更が反映されるという状況を作りたいです。
一度グループ化したものはずっとグループ化が反映された状況のまま変更作業をできたらと考えています。

お手数をおかけしますが、上記のようなことを実現できるSQL命令がわかる方おりましたらご回答よろしくお願いいたします。








●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:MySQL SQL test グループ データ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● km1967
●27ポイント

そういうSQL命令はありません。

◎質問者からの返答

ご回答ありがとうございます。


2 ● yyok
●27ポイント

DATA1の内容を任意に変更すると自動的に、DATA2の値でグループ化された他のデータ

も更新するということですか?

SQLだけでは無理で、トリガとストアドルーチンを使わないとダメじゃないでしょうか。

http://dev.mysql.com/doc/refman/5.1/ja/using-triggers.html

◎質問者からの返答

ご回答ありがとうございます。


3 ● ふるるP
●26ポイント

例えばTESTテーブルに以下のようにデータがあったとして、[(DATA1,DATA2)として表記]

(100,'AAA') ,(101,'AAA'), (201,'BBB'), (300,'AAA')

グループ化したとき、例えば次のようなSQLを作るでしょう。

Select DATA2, Max(DATA1) as Max_Data From TEST Group By DATA2

この結果セット

(300,'AAA')

(201,'BBB')

で'AAA'の場合の300を500へ変更したら、他の'AAA'のレコードについてもDATA1を500へ変更する、ということですので、その場合はDATA2='AAA'のレコードについて更新を書ける、ということになります。SQLは次のようになります。

Update TEST Set DATA1=500 Where DATA2='AAA'

「グループ化」されたデータ、というのは閲覧するためのものです。通常、グループ化したものを修正はしません。上記のようなUpdateを実行したら、意図しないレコードまで更新されてしまうからです。

データを修正したいとき、どのデータを修正するのかもっと詰めたほうが良いです。例えば、'AAA'のデータは上限が300だから、'AAA'でグループ化して、DATA1が300より大きいものに対して300に変更させる、など。

◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ