ACCESS クエリでフィールド名が重複するときの解決法

クエリでフィールド名が重複するときの解決法

ACCESSでクエリを作成する際は、複数のテーブルを組み合わせて作成します。
この際、複数のテーブルに同一のフィールド名があると、どのテーブルのフィールドを指しているのかクエリ側で認識できずにエラーとなることがあります。
この場合、「指定されたフィールド[〇〇〇〇]がSQLステートメントのFROM句にある複数のテーブルを参照しました」というエラーが表示されます。

今回は、クエリでフィールド名が重複するときの解決法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

クエリでフィールド名が重複した際のエラー

クエリを作成する際に、複数のフィールドで同一のフィールド名がある場合、以下のエラーが表示されます。

指定されたフィールド[〇〇〇〇]がSQLステートメントのFROM句にある複数のテーブルを参照しました

エラーメッセージだけではどうすればよいかわかりにくいですよね。

これは、クエリの中で〇〇〇〇というフィールド(上記のエラーメッセージだと担当ID)が、複数のテーブルにあるので、どのテーブルの値を参照してよいかACCESSが判断できないよ、という意味です。

実際にこのエラーが出たクエリをデザインビューで見てみましょう。

上記のような構造にしており、下段のデザイングリッドの一番右に以下の計算式を記述しています。

この中で今回の原因を引き起こしているのが担当IDです。
上段のフィールドリストを見ると、担当IDはMST_顧客テーブルにも、MST_担当テーブルにもありますよね。

そのため、この計算式で指している担当IDがどちらのテーブルの担当IDなのか判別がつかない、というエラーなのです。

解決方法

この場合は、どのテーブルのフィールドを指しているのかを明示的に記述することで解決が可能です。
例えば、以下のようにクエリの記述を変更します。

フィールド名の前にテーブル名を記載し、.(ドット)でつないでいます。

このような記述によってどちらのテーブルのフィールドを指しているかを明確化できます。

これでエラーが出ずにクエリが表示できるようになります。

以上、クエリでフィールド名が重複するときの解決法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス紹介

最後までお読みいただき、ありがとうございました。