- ベストアンサー
Access2002について
Access2002で次のようなデータがあり、 フィールドA |フィールドB | フィールドC -------------------------------------------- 123 | 234 | 456 | 123 | (1) 789 | 123 | (1) フィールドBのデータが、フィールドAのデータの中に存在している時は、フィールドCに(1)と表示させる。 ・・・という処理をしたいのですが、どんな方法でやったらいいのでしょうか?レコード数は50万程あります。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
テーブル名:t1 フィールド名:f1,f2,f3 クエリ1名:q1 クエリ1内容:SELECT t1.f1 FROM t1; クエリ2名:q2 クエリ2内容:UPDATE t1 INNER JOIN q1 ON t1.f2 = q1.f1 SET t1.f3 = "A"; これでq2を実行したら、ちゃんとできました。 頑張ってください(^o^)丿
その他の回答 (2)
- O_cyan
- ベストアンサー率59% (745/1260)
簡単な方法として フィールドAだけの抽出クエリを作りテーブルにそのクエリをテーブルの全てのレコードとクエリのレコードと同じ結合のリレーションを作ります。 クエリのレコードがNullでないものに(1)をふるようにすれば良いのではないでしょうか。
補足
う~ん、似たような処理をしてみたんですが上手くいかないんですよね。 フィールドAとフィールドBでそれぞれクエリを作り、その2つのクエリでリレーション(フィールドAの全データとフィールドCの同じ結合フィールドのレコードだけを含める)を設定し、もう一つクエリを作ってデータを表示させて見るのですが、何か間違ってるのでしょうか?
- honopy
- ベストアンサー率0% (0/2)
クエリにて、フィールドCにあたる列に、 フィールドC:IIF(Nz([フィールドA])>=Nz([フィールドB]),"(1)",null) とすると、可能だと思います。お試し下さい。 ※Nz()はカッコ内のフィールドがNULL値の場合に0(ゼロ)に置換する関数です。 ※頭の「フィールドC:」はフィールド名を指定しております。
補足
説明不足だったようですみません。データの大小は、決まっているわけではなく、文字で言うと フィールドA | フィールドB | フィールドC --------------------------------------------- あ | い | う | あ | ★ え | お | --------------------------------------------- という感じです。 フィールドBのデータが、フィールドAのいずれかに存在している際に、フィールドCになにか値を入れるようにしたいと思っています。 どうぞよろしくお願い致します。
お礼
おぉ!出来ました。出来ちゃいました。ありがとうございます。いわゆる更新クエリですよね。自分では全然かけません。本当に助かりました。ありがとうございますm(__)m