重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

よろしくお願いします。アクセスで作成したテーブル、例えばAとBには共通の番号があります。それぞれは各テーブル内で番号がいくつか重複しています。この番号により、リレーションシップの関連付け(参照整合性は行わず)を行った後、クエリで抽出したところ、ところどころ同じデータが発生して、膨大な量になってしまいます。参照整合性・フィールドの連鎖更新・レコードの連座削除をチェックして再度リレーションシップを作成しましたが、主テーブルで参照されている固有のインデックスが見つからないとのエラーメッセージが出ます。このテーブルA・Bを使用してデータが重複しないようにクエリで抽出する事はできますか。

A 回答 (3件)

この説明でもまだ変ですよ


伝票とその詳細なら

[伝票見出](伝票番号*、取引先、取引日、・・・)
[伝票詳細](伝票番号*、製品ID*、数量、・・・)
*印のものが主キー

のようになり「伝票見出」のほうの伝票番号は主キーとなり
「伝票見出」には同じ伝票番号のものは存在しないという形になるはずです
一つの伝票(取引)に複数の取引先が存在するのですか?
    • good
    • 0

>それぞれは各テーブル内で番号がいくつか重複しています。


このようなものは直接リレーションシップは設定できません
多対多の関係なら中間テーブルが必要です

>リレーションシップの関連付け(参照整合性は行わず)を行った後
これは何かの間違いですね
たぶんリレーションシップじゃなくクエリの結合のことを言っているんじゃないですか

もう少し詳しい情報をアップされたほうがいいみたいですよ

この回答への補足

お手数お掛けします。補足いたします。テーブルAとBの共通番号は伝票番号です。(元のデータはExelデータを変換したものです。)テーブルAは、伝票番号とその製品データ等。テーブルBには伝票番号と取引先名等です。また、各テーブルで伝票番号が重複しているのは、1つの伝票番号に何種類かの品目があるためです。テーブルBの中にある取引先をテーブルAに挿入したクエリを作成したかったのです。

補足日時:2008/06/05 21:40
    • good
    • 0

おそらくリレーションが正しく行われていない為だと思われます。


その番号がテーブルAでは一意のキーとなっていても、テーブルBでは違うということでしょう。
簡単に解決する方法としてはDISTINCTでしょう。
SELECT DISTINCT A.ID FROM TABLE_A A, TABLE_B B
WHERE A.ID = B.ID
    • good
    • 0
この回答へのお礼

早々に有難うございます。初心者同然なものでDISTINCTについて確認してみます。

お礼日時:2008/06/05 21:36

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

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