2017-11-01 18 views
0

プライマリId(p_id)とセカンダリId(s_id)を持つデータセットがあります。しかし、セカンダリIdは、ユーザが要求された詳細を提供するまで作成されません。ユーザーがその詳細を入力しなくなるまで、セカンダリIDはNAのままです。私はすべてのNAをSecondary Idに置き換えることができるようにしたい。PostgreSQLのデータ操作

p_id | s_id | Amount | P_date 
123 | NA  | 20  | 10/02/2017 
123 | NA  | 15  | 10/02/2017 
123 | abc123 | 15  | 10/03/2017 
123 | abc123 | 22  | 10/05/2017 
456 | NA  | 26  | 10/02/2017 
456 | NA  | 30  | 10/04/2017 
456 | NA  | 10  | 10/05/2017 
456 | aws456 | 05  | 10/06/2017 
456 | aws456 | 05  | 10/06/2017 
678 | NA  | 10  | 10/03/2017 
678 | rty678 | 10  | 10/04/2017 

私たちは、何がその特定のユーザのための二次同上であることを知っていたら、私たちは、私はこのデータを持っているために、選択クエリを使用する必要があり、実際の二次同上

p_id | s_id | Amount | P_date 
123 | abc123 | 20  | 10/02/2017 
123 | abc123 | 15  | 10/02/2017 
123 | abc123 | 15  | 10/03/2017 
123 | abc123 | 22  | 10/05/2017 
456 | aws456 | 26  | 10/02/2017 
456 | aws456 | 30  | 10/04/2017 
456 | aws456 | 10  | 10/05/2017 
456 | aws456 | 05  | 10/06/2017 
456 | aws456 | 05  | 10/06/2017 
678 | rty678 | 10  | 10/03/2017 
678 | rty678 | 10  | 10/04/2017 

ですべてのNAを交換する必要がありますPostgreSQLで

+0

このテーブルにはプライマリキーがありますか?そうでない場合:どうしてですか? – wildplasser

答えて

0

これはthird normal formに違反し、発生している問題がそれに関連しています。

あなたは、テーブルからs_idを削除し、p_idが主キーでのみp_ids_idを有する第二のテーブルを持っている必要があります。その後、元のテーブルからこの2番目のテーブルに外部キー制約を導入します。

p_id 変更–のすべてのエントリを更新する必要はありません。この問題はただ消えてしまいます。