2016-04-18 9 views
0

更新ステートメントで更新する列を条件付きで決定することは可能ですか?条件付きで更新する列を決定することはできますか?

レコードの前のフィールドがすでに入力されている場合のみ、レコードごとに30個の列のうちの1つを更新するために更新クエリを実行しようとしています。基本的には、プロジェクトとドナーを含むテーブルを持つテーブルがあります。各プロジェクトには1〜4名のドナーがいますが、各ドナーは1〜25のプロジェクトに資金を提供しています。プロジェクトのページにはドナーが記入されているので、私は資金提供したプロジェクトをドナーに自動的に記入しようとしています。これまでの私の試みは次の通りです。 (私は更新していたからクエリがときに、プロジェクトテーブルからドナーテーブル等しいドナー1又はドナー2またはドナー3又はドナー4からドナーがフィールドを選択するクエリである):

UPDATE [Appropriate Query] 
SET (iif([Project Funded 1 title] is null OR [project funded 1 title] <> 
[Project title], [project funded 1 title], iif([project funded 2 title] 
is null OR [project funded 1 title] <> [Project title], [project funded 2 title])) 
= Iif([Project title] is null, [cc number], [project title]) 

(私はこれを持っていますネストされたループの最初のSET部分はループされて30列になります。コードの2番目の部分は「プロジェクトタイトル」フィールドの一部が空白だからですが、フィールドに何らかの識別子が必要です)

これまでのところ、どのような列を上記のようにコンテンツの条件付きで更新するかを決定することは可能ですか?私はiifステートメントが醜いことを知っていますが、JET SQL(アクセス言語)は、私が理解している事例からケースステートメントを許可していません。

ありがとう、私の無知を許してください。

答えて

0

VBAを使用してSQLを動的に構築すること以外はできません。

BUT(少なくともここではありません)、テーブルデザインを修正する必要があります。

プロジェクトとドナーの間に多対多の関係があるため、基本表の複数の列の代わりにJunction tableを指定する必要があります。

INSERTクエリ、例えば一連の編集

確かに、あなたは、プロジェクトのテーブルを埋めている場合:

INSERT INTO junction (project_id, donor_id) 
SELECT id, donor1 FROM project WHERE donor1 IS NOT NULL; 

INSERT INTO junction (project_id, donor_id) 
SELECT id, donor2 FROM project WHERE donor2 IS NOT NULL; 

など

+0

はどうもありがとうございました、それは私が探している正確な情報です。 – Benjamin

+0

フォローアップの質問...私は既に多くのフィールドにデータを設定しています。ジャンクションテーブルにID番号の値を自動的に入力する方法はありますか? – Benjamin

+0

@ベンジャミン:編集を参照してください。 – Andre

関連する問題