- 締切済み
CSVデータのダウンロード方法で悩んでいます。
ID(自動)、名前、日付、・・・・・、元ID(通常は0)のような形のテーブルAが存在します。 一度登録したものに対して変更・取消が可能です。変更・取消を行うと元IDにどのIDに対して変更・取消が行われたのかわかるように 変更・取消元のIDが入るようになっています。 例)こんな感じです↓ ID(自動)、名前、日付、・・・・・、元ID(通常は0) 1、山田、12/01、・・・・・、0 2、鈴木、12/02、・・・・・、0 3、山田、12/05、・・・・・、1(ここで変更) 4、山田、12/10、・・・・・、3(ここで取消) 5、佐藤、12/15、・・・・・、0 6、鈴木、12/16、・・・・・、2(ここで変更) この時、取消されたデータは不要なので、データのダウンロード時には省きたいのですが、どのようにしたらいいのか分かりません。 上記例でいくと、ID:1、3、4は不要となるのでデータダウンロード時には、 ID(自動)、名前、日付、・・・・・、元ID(通常は0) 2、鈴木、12/02、・・・・・、0 5、佐藤、12/15、・・・・・、0 6、鈴木、12/16、・・・・・、2(ここで変更) だけになるようにしたいのです。 どなたかアドバイスお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- naganaga_001
- ベストアンサー率71% (172/242)
お世話になります。 人を識別する項目はないんですか? 元ID を入れる時はどうやってその人が同一であると (たとえば 1 と 3)判定しているんですか? あと、変更とか削除とか識別する項目は? もし人を識別するのが名前だったとしたら(ぶちゃけありえませんが) こんな感じで、2 と 5 と 6 が絞り込めます。 SELECT テーブルA.ID, テーブルA.名前, テーブルA.日付, テーブルA.元ID, テーブルA.区分(1変更2削除) FROM テーブルA WHERE 名前 NOT IN (SELECT 名前 FROM テーブルA WHERE 区分 = 2)
お礼
naganaga_001様 ご回答ありがとうございます。 必要な情報が不足していましたね。まず、 >人を識別する項目はないんですか? >元ID を入れる時はどうやってその人が同一であると >(たとえば 1 と 3)判定しているんですか? ですが、手元にソースがなくDBから解析を行っている為はっきりとしたことは言えませんが、画面上の作りが以下のようになっています。 ID(自動)、名前、日付、・・・・・、元ID(通常は0) 1、山田、12/01、・・・・・、0 [変更ボタン][取消ボタン] ですから、それぞれのボタンをクリックして更新する際にIDを元IDに落としているのではないでしょうか?(推測ですいません。) >あと、変更とか削除とか識別する項目は? これに関しては、一応「通常:0」「変更:1」「取消:2」のようにフラグを持っています。 ですから、テーブル構成は以下のようになります。 ID(自動)、名前、日付、・・・・・、状態、元ID(通常は0) 1、山田、12/01、・・・・・、1、0 2、鈴木、12/02、・・・・・、1、0 3、山田、12/05、・・・・・、2、1(ここで変更) 4、山田、12/10、・・・・・、2、3(ここで取消) 5、佐藤、12/15、・・・・・、0、0 6、鈴木、12/16、・・・・・、0、2(ここで変更) 上記のように、1つ前のレコードの状態フラグは変化します。 しかし、「名前:山田」のように、[登録]→[変更]→[取消]のようなデータ推移になると、 ID(自動)、名前、日付、・・・・・、状態、元ID(通常は0) 1、山田、12/01、・・・・・、1、0 3、山田、12/05、・・・・・、2、1(ここで変更) 4、山田、12/10、・・・・・、2、3(ここで取消) 上記のような状態になり、1番最初のレコードの状態フラグは[変更]のままになります。 このような状態でもID:1、3、4を省くことは可能でしょうか? よろしくお願いします。