MYSQLについて質問です。


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

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

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

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






回答の条件
  • 1人2回まで
  • 登録:2010/01/11 21:35:37
  • 終了:2010/01/18 21:40:03

回答(3件)

id:km1967 No.1

km1967回答回数541ベストアンサー獲得回数402010/01/11 22:24:53

ポイント27pt

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

id:aiomock

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

2010/01/11 22:30:33
id:yyok No.2

yyok回答回数59ベストアンサー獲得回数32010/01/12 00:30:59

ポイント27pt

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

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

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

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

id:aiomock

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

2010/01/16 13:01:32
id:frkw2004 No.3

ふるるP回答回数192ベストアンサー獲得回数212010/01/12 14:05:33

ポイント26pt

例えば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に変更させる、など。

id:aiomock

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

2010/01/16 13:01:36
  • id:chuken_kenkou
    「やりたいことを」を、もっと具体的に説明できないでしょうか?

    MySQLのバージョンも、明記してください。

    すぐに思いつくだけでも、機能が大きく異なります。

    MySQL 4.0以前・・・union、一部のjoin、一時表などは実装済
    MySQL 4.1・・・joinの拡張、サブクエリ、インラインビュー、unicodeなどの実装
    MySQL 5.0・・・ビュー表、ストアドプロシジャ、トリガなどの実装

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません