たとえば下記のようなテーブルがあります。

*得意先テーブル
得意先ID
得意先名称
得意先TEL
 ・
 ・

*取引履歴テーブル
得意先ID
商品ID
商品
取引日
 ・
 ・

上記テーブルの得意先IDを主キーとして、Access2000のリレーションシップの画面で結合させることと、クエリのデザイン画面でテーブルを結合させる事は同じ事をしているのでしょうか?

同じだとすれば、どちらか一方のみを設定すればよいのでしょうか?
違うとすれば、リレーションシップの画面で設定することと、クエリのデザイン画面で設定することの意味の違いを教えていただけないでしょうか?

ちょっと混乱しているので、おかしな質問をしておりましたらすみません f^^;
どうぞよろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

テーブルのリレーションとクエリーのデザインはあくまで別物です。



テーブルでリレーションを設定すれば、矛盾を許さない設定になります。
例えば、得意先テーブルのレコードを削除した場合、取引履歴テーブルにその得意先IDを持つレコードがあれば削除できない(または自動的に削除される)設定や、得意先IDを変更しようとした場合、取引履歴テーブルに同じ得意先IDがあれば変更できない(または自動的に変更される)設定などを行います。これにより双方のテーブルで矛盾が発生しなくなります。
クエリーに関してはこの場合だと、取引履歴に得意先名を表示させたりとかいう使い方ですよね?一致するレコードを表示させるっていう使い方になります。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
なるほど、クエリとリレーションシップでは、設定の内容が違うのですね。
私はいつもリレーションも、クエリも両方設定(ダブって)していましたが、用途によってクエリかリレーション、どちらかを設定すればよかったのですか。
勉強になります、ありがとうございました。

お礼日時:2001/07/24 11:31

クエリーのデザイン画面を使用して設定すると、新しいクエリーを作る


たびに設定をしないといけないです。
リレーションシップで一度設定しておけば、クエリーでいくつかテーブルを
追加するだけで勝手に設定まで終わっているはずです。
クエリーの画面で何度も設定をしなくても良いようにリレーションシップ
があると考えれば良いと思います。
    • good
    • 0
この回答へのお礼

さっそくの回答ありがとうございます。
なるほど、クエリはテーブルが変更があるたびに都度の設定が必要で、リレーションシップは一度の設定で変更があっても覚えていてくれる。
ということですね。
勉強になります、ありがとうございました。

お礼日時:2001/07/24 11:20

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

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QMs Access テーブルBにテーブルAのCDを充てたい。(クエリ?紐づけ?リレーションシップ?)

初心者です。よろしくお願いします。
そもそも、できるのかどうか、できたとして、どうするのかがわからないです。

次の2つのテーブルがあります。
テーブルマスタA には、①市町村CD ②市町村名 ③住所(番地なし)
テーブル受付データB には、①NO ②住所(番地まであり)③受付日 ④⑤・・・

具体的には、以下のとおり。(サンプル)
テーブルマスタA
①    ②      ③
10000  松戸市    千葉県松戸市
20000  鎌ケ谷市本町 千葉県鎌ケ谷市本町
30000  横須賀市   神奈川県横須賀市
テーブル受付データB
①    ②
1    千葉県松戸市五香5-5-5    
2    千葉県鎌ケ谷市本町さくらがおか8-88-8 ひまわりアパート302
3    神奈川県横須賀市横須賀8-7-8   

テーブル受付データBにおいて、②の部分(市町名まで)と、
テーブルマスタAの③をなんとか紐づけて、

クエリで合体させたい。
=テーブル受付データBに、テーブルマスタAの市町村CDを充てたい。
A①市町村CD  A②市町村名 B② B③ B④ B⑤
とすることを切望しています。

***********
たとえば、2つのテーブルに同じフィールドがあって、
それをリレーションシップで紐づけるのは容易ですが、
今回のようなパターンは、
もしかして、私は、ナンセンスなことをしようと苦闘している?と思ってきました。
フィールド名が同じじゃないのに、それを紐づけることができるのでしょうか?

できるとして、どのようにすればよいのでしょうか?

どうぞ、教えていただきたく、お願いいたします!!!

初心者です。よろしくお願いします。
そもそも、できるのかどうか、できたとして、どうするのかがわからないです。

次の2つのテーブルがあります。
テーブルマスタA には、①市町村CD ②市町村名 ③住所(番地なし)
テーブル受付データB には、①NO ②住所(番地まであり)③受付日 ④⑤・・・

具体的には、以下のとおり。(サンプル)
テーブルマスタA
①    ②      ③
10000  松戸市    千葉県松戸市
20000  鎌ケ谷市本町 千葉県鎌ケ谷市本町
30000  横須賀市   神奈川県横...続きを読む

Aベストアンサー

パラメータが表示されたのは指定したフィールドがないからです。
テーブル名とフィールド名を使用している名前に変更してください。

InStr関数は
ある文字列 (string1) の中から指定された文字列 (string2) を検索し、最初に見つかった文字位置を返す文字列処理関数です。
InStr(string1, string2)

やっていることはテーブル受付データBの②(住所)の中からテーブルマスタAの③(住所)を検索し
文字列がある位置を出しています。
必要なのは文字列が含まれているデータのみなので条件を>0としています。

試しにInStrの部分をなくしてクエリを実行してみてください。
「テーブルマスタA」のレコード数*「テーブル受付データB」のレコード数のデータが表示されるはずです。

QACCESSクエリで複数テーブルの値の結合について

現在、ACCESS2000で2つのテーブルの値を表示するクエリを作成中です。
テーブルは外部データよりインポートしています。

Aテーブル
KEY1 | KEY2 | 値1
--------------------------
00000001 | AAAAAAAA | 100
00000001 | BBBBBBBB | 200
00000002 | AAAAAAAA | 1000

Bテーブル
KEY1 | KEY2 | 値1
--------------------------
00000001 | AAAAAAAA | 500
00000002 | BBBBBBBB | 300


これを、
KEY1 | KEY2 | 値1
------------------------------------------------
00000001:00000001 | AAAAAAAA:AAAAAAAA | 100:500 ←(1)
00000001:NULL | BBBBBBBB:NULL | 200:NULL ←(2)
00000002:NULL | AAAAAAAA:NULL | 1000:NULL ←(3)
NULL:00000002 | NULL:BBBBBBBB | NULL:300 ←(4)

と表示したいのです。

INNER JOIN では、上記(1)しか表示されません。
また、LEFT JOIN では、(1)(2)(3)は表示されますが、(4)が表示されません。

SQLは下記です(INNER JOINを使用した場合)
SELECT [Aテーブル.KEY1] & ":" & [Bテーブル.KEY1] AS KEY1,
[Aテーブル.KEY2] & ":" & [Bテーブル.KEY2] AS KEY2,
[Aテーブル.値1] & ":" & [Bテーブル.値1] AS 値1
FROM Aテーブル INNER JOIN Bテーブル
ON ([Aテーブル].[KEY1]=[Bテーブル].[KEY1]) AND ([Aテーブル].[KEY2]=[Bテーブル].[KEY2]);


どなかた教えてください。お願いします。

現在、ACCESS2000で2つのテーブルの値を表示するクエリを作成中です。
テーブルは外部データよりインポートしています。

Aテーブル
KEY1 | KEY2 | 値1
--------------------------
00000001 | AAAAAAAA | 100
00000001 | BBBBBBBB | 200
00000002 | AAAAAAAA | 1000

Bテーブル
KEY1 | KEY2 | 値1
--------------------------
00000001 | AAAAAAAA | 500
00000002 | BBBBBBBB | 300


これを、
KEY1 | KEY2 | 値1
-------------------------...続きを読む

Aベストアンサー

#1です。
もしかしたら、unionクエリーの時点で、
重複データは、1元化されるかもしれません。
そうなれば、集計クエリーは必要なくなると思います。
すいません。確認してません。

Q複数のクエリを結合して実行したら・・・

アクセス2000で行き詰まっています。月報を作成します。
テーブルは 1.日付 2.原料の受入(3社) 3.原料の使用 4.製品出来高4つです。 それぞれをクエリを作成して別に日付と結合しました。結合プロパティは抽出した期間の日付の全レコードと同じ結合フィールドの[受入日][使用日][出来高日]のレコードが表示されるように設定しました。
ところが、原料のLOT・使用量が同じ使用日に複数あると原料の受入や製品の出来高も複数行(同一日・同一量)表示されます。この結果を月別にレポートにしたいのですが、上のデータと同一なら非表示に設定できますか?教えてください。

Aベストアンサー

レポートに[並び替え/グループ化の設定]で日付のグループヘッダを設定します。
日付のグループヘッダに[受入日][出来高日][出来高]を配置し詳細に[原料の
LOT][使用量]を配置すればグループヘッダは一行で詳細は複数行でも対応出来る
と思います。
フィールド名が合っているか分かりませんが一行で表示したいフィールドは日付グ
ループヘッダに、複数行表示する可能性があるフィールドは詳細へ配置する。
これでOKだと思うのですが。

QACCESSクエリで複数テーブルの抽出方法

#1583217にて質問させていただいたものです。
私の早とちりで質問を締め切りさせていただいたのですが、クエリが要求通りに出てくれません。
再度、質問させて下さい。

現在、ACCESS2000で2つのテーブルの値を表示するクエリを作成中です。
テーブルは外部データよりインポートしています。

Aテーブル
KEY1 | KEY2 | 値1
--------------------------
00000001 | AAAAAAAA | 100
00000001 | BBBBBBBB | 200
00000002 | AAAAAAAA | 1000

Bテーブル
KEY1 | KEY2 | 値1
--------------------------
00000001 | AAAAAAAA | 500
00000002 | BBBBBBBB | 300


これを、
KEY1 | KEY2 | 値1
----------------------------------------
NULL:00000002 | NULL:BBBBBBBB | NULL:300

と表示したいのです。(Bテーブルにあるデータのみを表示)

どなかた教えてください。お願いします。

#1583217にて質問させていただいたものです。
私の早とちりで質問を締め切りさせていただいたのですが、クエリが要求通りに出てくれません。
再度、質問させて下さい。

現在、ACCESS2000で2つのテーブルの値を表示するクエリを作成中です。
テーブルは外部データよりインポートしています。

Aテーブル
KEY1 | KEY2 | 値1
--------------------------
00000001 | AAAAAAAA | 100
00000001 | BBBBBBBB | 200
00000002 | AAAAAAAA | 1000

Bテーブル
KEY1 | KEY2 | 値1
-----...続きを読む

Aベストアンサー

とりあえず、「Null」の表示がなくても良いなら:
SELECT Bテーブル.Key1, Bテーブル.Key2, Bテーブル.値1
FROM Aテーブル RIGHT JOIN Bテーブル ON (Aテーブル.Key1 = Bテーブル.Key1) AND (Aテーブル.Key2 = Bテーブル.Key2)
WHERE (((Aテーブル.Key1) Is Null) AND ((Aテーブル.Key2) Is Null));


あくまで「Null:」を表示したいのであれば:
SELECT "Null:" & [Bテーブル]![Key1] AS Key1連結, "Null:" & [Bテーブル]![Key2] AS Key2連結, "Null:" & [Bテーブル]![値1] AS 値連結
FROM Aテーブル RIGHT JOIN Bテーブル ON (Aテーブル.Key1 = Bテーブル.Key1) AND (Aテーブル.Key2 = Bテーブル.Key2)
WHERE (((Aテーブル.Key1) Is Null) AND ((Aテーブル.Key2) Is Null));

といったところでいかがでしょうか?
(2番目の方、クエリの構造的に「Aテーブルにないもの→Null」しかないので、テキストで「Null:」表示としています)

とりあえず、「Null」の表示がなくても良いなら:
SELECT Bテーブル.Key1, Bテーブル.Key2, Bテーブル.値1
FROM Aテーブル RIGHT JOIN Bテーブル ON (Aテーブル.Key1 = Bテーブル.Key1) AND (Aテーブル.Key2 = Bテーブル.Key2)
WHERE (((Aテーブル.Key1) Is Null) AND ((Aテーブル.Key2) Is Null));


あくまで「Null:」を表示したいのであれば:
SELECT "Null:" & [Bテーブル]![Key1] AS Key1連結, "Null:" & [Bテーブル]![Key2] AS Key2連結, "Null:" & [Bテーブル]![値1] AS 値連結
FROM Aテーブル RI...続きを読む

Qテーブル作成クエリで主キーを設定

サブフォーム作成のため主キーを設定したいのですが、クエリでグループ化した顧客コードをテーブルとするクエリで主キーを顧客コードに設定したいのですが、クエリ実行で主キー設定方法を教えてください。

Aベストアンサー

テーブル作成クエリ実行後、
DAO で CreateIndex ということになると思います。

おそらく、ワークテーブルで編集し、
元のテーブルに書き戻すような処理をお考えだと思いますが、
あらかじめ、主キーを設定したテーブルを作成しておき、
削除クエリで、全レコード削除、
テーブル作成クエリを追加クエリに変更したもので、
新しいレコードを追加する、
という処理で置き換えられませんか?

Access であるとして、
テーブルの作成、削除を繰り返すと、
MDB ファイルの破損につながりますので。

見当違いだったら無視してください。


人気Q&Aランキング

おすすめ情報