アプリ版:「スタンプのみでお礼する」機能のリリースについて

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(ここで変更)
だけになるようにしたいのです。

どなたかアドバイスお願いします。

A 回答 (1件)

お世話になります。



人を識別する項目はないんですか?
元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)
    • good
    • 0
この回答へのお礼

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を省くことは可能でしょうか?
よろしくお願いします。

お礼日時:2006/12/25 09:27

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