プロが教えるわが家の防犯対策術!

お世話になります。

現在、1テーブル内をログテーブル用として利用しています。

JSPでフォームを作成して各フィールド値を、
Webサイト画面上から変更可能なつくりにしており、
複数あるいずれかのフィールドの値を1つ以上変更してから、
[保存]ボタンを押下した際に、
  ↓
その変更前のレコード1件と、
変更後のレコード1件を、
同じログ用テーブル内へフラグ(変更前:0、変更後:2)を
それぞれ変えて、
INSERT INTOでレコードを計2件追加しています。
(あわせて、追加時のタイムスタンプをセットするフィールドもあるので、
 どんどんレコードを追加可能な仕様です)

そこでご質問なのですが、
この2つのレコードのみを比較して、
値が異なるフィールド名のみを、
(ときには複数フィールドにおいて値が異なるケースも有ります)
SELECTなどで表示させるようなSQL文の
作り方をご存じの方がいらっしゃいましたら、
ぜひ教えてください。

なぜこのようなご質問をさせていただいたかと申しますと、
ログテーブル内の上記した2件のレコードを比較して、
どこのフィールドの値が変更されたか?
を確認する際に利用したい為です。
(確認時には、phpMyAdminツールなどで直接SQL文をたたいて実行予定です)

以上、宜しくお願い致します。

A 回答 (3件)

チェック用なら、以下のSQLでもいいんではないでしょうか。



select
concat(
case when a.c1=b.c1 then '' else concat(' c1:',b.c1) end
,case when a.c2=b.c2 then '' else concat(' c2:',b.c2) end
,case when a.c3=b.c3 then '' else concat(' c3:',b.c3) end ) compare
from a,b where キー条件~
    • good
    • 0
この回答へのお礼

お世話になっております。

concatやcase whenやcompareというものがSQL文で利用できる物として、
存在していることすら不勉強で存じ上げませんでした。
来週早々に、開発環境にてさっそく試してみます。
ご回答ありがとうございました。

お礼日時:2011/01/14 23:20

-----------------------------------------------------


      | フィールド1 | フィールド2 | フィールド3 | フィールド4 |フラグ
-----------------------------------------------------
レコード1 | 1       | 11      | 111     | 1111    | 0
レコード2 | 1       | 22      | 111     | 2222    | 2

というデータのときに [フィールド2]、[フィールド4] という列名のリストが欲しい、ということでしょうか。

SELECT 文では無理でしょう。phpMyAdmin で結果を知りたいのであれば、ストアドプロシージャを組むしかないですね。

この回答への補足

お世話になっております。

アウトプットのイメージと致しましては、
今回ご回答いただきました内容が、
私のイメージと同じでした。

もしよろしかったら、
ストアドプロシージャで組むカンタンな例など
教えていただけましたら助かります。

以上、宜しくお願い致します。

補足日時:2011/01/14 23:15
    • good
    • 0
この回答へのお礼

いろいろと教えていただきまして、
ありがとうございました。

お礼日時:2011/01/21 17:32

こんばんは。



結果セットとしては、どのように表示したいのでしょうか?
・両方のレコードを出し、差分がないカラムはNULL
・更新後のレコードのみ出力し、差分がないカラムはNULL
など・・・。

アウトプットがイメージできないので、SQLが書けないです。

この回答への補足

お世話になっております。

アウトプットと致しましては、
上記「No2」でご回答をshitaba様よりいただきました
内容と同じことを、私の方ではイメージ致しております。


以上、宜しくお願い致します。

補足日時:2011/01/14 23:10
    • good
    • 0
この回答へのお礼

お世話になりました。
ありがとうございました。

お礼日時:2011/01/21 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す