
お世話になります。
現在、1テーブル内をログテーブル用として利用しています。
JSPでフォームを作成して各フィールド値を、
Webサイト画面上から変更可能なつくりにしており、
複数あるいずれかのフィールドの値を1つ以上変更してから、
[保存]ボタンを押下した際に、
↓
その変更前のレコード1件と、
変更後のレコード1件を、
同じログ用テーブル内へフラグ(変更前:0、変更後:2)を
それぞれ変えて、
INSERT INTOでレコードを計2件追加しています。
(あわせて、追加時のタイムスタンプをセットするフィールドもあるので、
どんどんレコードを追加可能な仕様です)
そこでご質問なのですが、
この2つのレコードのみを比較して、
値が異なるフィールド名のみを、
(ときには複数フィールドにおいて値が異なるケースも有ります)
SELECTなどで表示させるようなSQL文の
作り方をご存じの方がいらっしゃいましたら、
ぜひ教えてください。
なぜこのようなご質問をさせていただいたかと申しますと、
ログテーブル内の上記した2件のレコードを比較して、
どこのフィールドの値が変更されたか?
を確認する際に利用したい為です。
(確認時には、phpMyAdminツールなどで直接SQL文をたたいて実行予定です)
以上、宜しくお願い致します。
No.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 キー条件~
お世話になっております。
concatやcase whenやcompareというものがSQL文で利用できる物として、
存在していることすら不勉強で存じ上げませんでした。
来週早々に、開発環境にてさっそく試してみます。
ご回答ありがとうございました。
No.2
- 回答日時:
-----------------------------------------------------
| フィールド1 | フィールド2 | フィールド3 | フィールド4 |フラグ
-----------------------------------------------------
レコード1 | 1 | 11 | 111 | 1111 | 0
レコード2 | 1 | 22 | 111 | 2222 | 2
というデータのときに [フィールド2]、[フィールド4] という列名のリストが欲しい、ということでしょうか。
SELECT 文では無理でしょう。phpMyAdmin で結果を知りたいのであれば、ストアドプロシージャを組むしかないですね。
この回答への補足
お世話になっております。
アウトプットのイメージと致しましては、
今回ご回答いただきました内容が、
私のイメージと同じでした。
もしよろしかったら、
ストアドプロシージャで組むカンタンな例など
教えていただけましたら助かります。
以上、宜しくお願い致します。
No.1
- 回答日時:
こんばんは。
結果セットとしては、どのように表示したいのでしょうか?
・両方のレコードを出し、差分がないカラムはNULL
・更新後のレコードのみ出力し、差分がないカラムはNULL
など・・・。
アウトプットがイメージできないので、SQLが書けないです。
この回答への補足
お世話になっております。
アウトプットと致しましては、
上記「No2」でご回答をshitaba様よりいただきました
内容と同じことを、私の方ではイメージ致しております。
以上、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLローダーCSV取込で、囲み文...
-
int型フィールドにnullを登録で...
-
DateTime型の検索
-
テーブルの最後(最新)のレコー...
-
MySQLでのフィールドの結合
-
フィールド表示順序の変更
-
mysql accessでの操作について
-
フィールド名に日付を入れたい
-
MySQLのTimestamp(14)型のフィ...
-
テーブルのフィールドの一番長...
-
PASSWORD関数
-
複数のフィールドから、合計数...
-
1テーブル内レコードの各フィー...
-
mysqlのフィールド名に使える記...
-
Datetime型とTimestamp型の使い...
-
アクセス2003でのデータベース...
-
1つのVARCHAR属性のフィールド...
-
入力データの半角スペースと全...
-
MySQLへ、phpMyAdminを利用して...
-
2番目に小さい引数を返す関数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
BLOBやCLOBのパフォーマンスを...
-
int型フィールドにnullを登録で...
-
SELECTした合計値をそのまま割...
-
配列に指定した値が含まれてい...
-
テーブルのフィールドの一番長...
-
2回実行のSQL文を1回にしたい
-
Null値件数をカウントする式に...
-
ファイルメーカーのフィールド...
-
固定長データのテキストファイ...
-
ACCESSのクエリで空白以降を別...
-
CSVからNULL値をインポート
-
MySQLでの近似値順での値の取得...
-
REGEXPで希望の動作をしてくれない
-
郵政省の郵便番号を取り込みた...
-
【MySQL】 DECIMAL(2,1) に 13...
-
date型のselect について
-
phpmyadminで条件付きの検索置...
-
入力データの半角スペースと全...
おすすめ情報