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

識者の力をお借りしたく質問いたします。

質問ページから不一致クエリに関する内容を参考に、ある不一致クエリを作成しています。

しかし、出来るはずの方法で結果が正しく表示されず途方にくれています。

処理の内容としては、あるクエリのフィールドを参考に不一致クエリで差分レコードを抽出したいというものです。

通常不一致クエリはテーブルの主キーを基に作成するものと私は理解しているのですが、今回の処理では基のテーブルに主キーが無く、(作成できない事情があり)クエリで無理矢理主キーもどきのものを作りました。

クエリで作成したのは、数字6桁(最大で)の後ろにチェックディジットとしてアルファベット1文字を追加した計7文字のフィールドです。

例:131401A

不一致を抽出したい基となる2つのテーブルに対しこのクエリを作成しました。

この2つのクエリから不一致クエリで差分を抽出し、基のテーブルに追加クエリで追加したいのですが、どうやっても不一致項目が表示されません。

根本的にクエリからの不一致クエリは作成できないのでしょうか?

よろしくお願いいたします。

■状況
テーブル1/テーブル2(基となるテーブル、主キー無し)
クエリ1/クエリ2(テーブル1/テーブル2のレコードにコードを追加するクエリ)
コード1/コード2(クエリ1/クエリ2で作成したコード)例:131401A
不一致クエリ
テーブル2 → テーブル1 (リレーションシップ)
コード2 条件:Not Null

※テーブル2の方が最新レコードが入っているので、テーブル2の差分レコードをテーブル1に追加したいというのが基本的な内容です。

よろしくお願いいたします。

A 回答 (2件)

比較に使用する列にキー(インデックス)があれば良く、主キーである必要はありません。



また、不一致クエリの部分に誤解があるようですね。
テーブルを簡略化して例示します。

テーブル1/テーブル2
1   / 1
2   / 2
    / 3   ←これが検出されるクエリを作成する。

この場合、不一致クエリではテーブル1の側がNULLになります。テーブル2がNotNullでは1~3まですべて検出されてしまいます。

作成は以下の順序で行ってみてください。
1)テーブル1とテーブル2を追加して選択クエリを作成します。
  テーブル2のすべてとテーブル1の結合列を表示させるようにします。
2)テーブル2の結合列をテーブル1の結合列にドラッグします。
3)結合で表示された線をクリックしてテーブル2のすべてが表示されるようにします。
4)ここで確認。例示の3行が表示されます。
5)追加分のみに絞ります。1)で作成したテーブル1の結合列の条件にIsNullを加えてください。
6)ここで確認。例示の3行目だけが表示されます。
7)5)でIsNullを設定した列の「表示」のレ点を外します。
8)ここで確認。例示の3行目のテーブル2の部分だけが表示されます。
9)デザインビューにしてメニューのクエリをクリックし、「追加」を選択します。対象は追加なさりたいテーブル(テーブル1?)を選択。

以上でいかがでしょうか?

この回答への補足

ご返答頂きありがとうございます。

実は基となるテーブルにはインデックスとなるキーが無いのです。
複数の列を組み合わせたキーを作成しないと、個別のレコードの特定が出来ません。

という返答を考えていて気付きました。
差分を抽出するだけだったら個別レコードを判別する必要は無いですよね!

基テーブルに時刻フィールドがありました。
これを基に不一致クエリを作成したら上手くいきました。

参考になりました。

それと、上記質問の様な、基がテーブルでなくクエリからでは不一致クエリは機能しないのでしょうか?
[フィールド]&[フィールド]で作成したクエリのフィールドでは不一致を導き出せないのか、はたまた数字とテキストを結んだことによるデータ型の問題なのか...

補足日時:2007/10/31 09:48
    • good
    • 0

インデックスがあるほうが有利、で良いのでは?


300万件を越えるデータを付き合わせして痛い目にあいました。

> はたまた数字とテキストを結んだことによるデータ型の問題なのか...
うーん、質問文からは読み取れませんでしたね。これは影響があると思いますよ。
比較に使用する項目の条件が合いさえすれば、テーブルからでもクエリからでも不一致クエリは作成できます。

1)一致するもののみ抽出するクエリを作成
2)どちらか一方をすべて表示させ、かつ一致するものも表示するクエリに変更
3)1)の結果である「共通するもの」を除くものだけにする(2であらたに表示されたものだけにする)

と確認しながらクエリを変更してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございました!

次回クエリから作る事があれば試してみたいと思います。

お礼日時:2007/11/07 09:39

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A