MSアクセスのクエリ作成方法と名称抽出方法

このQ&Aのポイント
  • MSアクセスのクエリ作成方法や名称抽出方法についてわかりやすく解説します。
  • 商品明細テーブルと仕入先テーブルを結合して、商品名に対して商品コードの頭4桁をキーにして仕入先の名称を取得する方法をご紹介します。
  • 具体的なクエリの作成手順と式の入力方法を例を交えて解説し、試した結果が"該当なし"になってしまう原因と対処法についてもお伝えします。
回答を見る
  • ベストアンサー

MS アクセス クエリ作成 名称抽出方法

アクセスのクエリの作成がわかりません(アクセスのバージョンは2003です) アクセスの初心者です。Webをみたり参考書を見たりしているのですが、、、クエリの作成方法が分からず困っております。どなた操作方法を教えていただけますか。お願いいたします。 抽出したいのは以下の1, 商品明細テーブルから「商品名」全件に対して「商品コード」の頭4桁をキーにして、仕入先テーブルのコードから「名称」を取得する方法です。 当方の作成したクエリは下記の通り操作しましたが、結果はすべて"該当なし"になってしまいます。 ・クエリ作成画面で両テーブルを結合。 ・フィールド欄に以下の式を入力しました 仕入先名称:iif(strcomp(Left([商品明細テーブル].[商品コード],4),[仕入先テーブル].[コード],0)=0,[仕入先テーブル].[ 名称],"該当なし") 1, 商品明細テーブル 商品名 価格 商品コード --------------------------- 商品A \110 AAA01115000 商品B \115 AAA19376122 商品C \112 AAA09472391 商品D \115 AAA22947555 商品E \120 AAA09422138 商品F \165 AAA13871911 商品G \150 AAA09272611 商品H \210 AAA27319313 2, 仕入先テーブル コード 名称 AAA0 XXXX商事 AAA1 YYYY産業 AAA2 (株)ZZZZ 恐れ入りますが、ご回答の程宜しくお願いいたします。

  • lcnaf
  • お礼率50% (1/2)

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

クエリのデザインビューだけで作成したいなら、 クエリ作成画面で、テーブルを結合せずに、商品明細テーブルだけを表示しておいて、 フィールド欄に以下の式を入力してください。 仕入先名称: DLookUp("[名称]","仕入先テーブル","[コード] = """ & Left([商品コード],4) & """") DLoopup関数は、直接テーブルを参照する関数なので、クエリ作成画面に仕入先テーブルを含める必要はありません。 ただしこの方法は、該当なしの場合は「該当なし」ではなく空白(Null)になります。 どうしても「該当なし」と出したい場合は、ちょっと冗長ですが、 仕入先名称: IIf(DLookUp("[名称]","仕入先テーブル","[コード] = """ & Left([商品コード],4) & """") Is Null,"該当なし",DLookUp("[名称]","仕入先テーブル","[コード] = """ & Left([商品コード],4) & """")) とするか、 #1さんのように、直接SQLビューに記述するしかないでしょう。

lcnaf
質問者

お礼

nag0720さん、 ご指南ありがとうございます。 DLoopup関数のやり方で問題が解決する事ができました!!! 当方はSQLを記述することが苦手なので、ご指南どおりのやり方で対応することにしました。 助かりました、ありがとうございました。

その他の回答 (1)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

下記でどうでしょう。(確認無し) クエリのSQLビューにコピペしてください。 デザインビューに変更して自分で作った SQLと比較してください。 --- select 商品明細テーブル.商品名, iif(仕入先テーブル.名称 is null,"該当無し",仕入先テーブル.名称) as 仕入先名称 from 商品明細テーブル left join 仕入先テーブル on left(商品明細テーブル.商品コード,4) = 仕入先テーブル.コード

lcnaf
質問者

補足

o_chi_chiさん、 はじめまして、ご指南ありがとうございます。 o_chi_chiさんのSQLと比較してみたら、私のSQLが間違っていましたので、教えて頂いたSQLを実行した際に以下の警告メッセージが出て実行することができませんでした。 「結合式がサポートされません」 どのように対応すればよいでしょうか。 自分のしたい操作をクエリのデザインで設定するのではなく、SQLで記述しなければいけないのでしょうか。私は高度なSQLスキルがないので、、、何卒よろしくお願いいたします。

関連するQ&A

  • Accessでのクエリ作成についてですが

    【Tジャンル】【T商品】【T仕入先】 ↑これらの3つのテーブルを使ってクエリを作成すると仮定します。 それぞれのテーブルにあるフィールドの内容は以下の通りです。 【Tジャンル】 [ジャンルコード(主キー)][ジャンル名] 【T商品】 [商品コード(主キー)][商品名][ジャンルコード] [仕入先コード][仕入原価][標準価格][終息][備考] 【T仕入先】 [仕入先コード(主キー)][仕入先名][フリガナ][郵便番号] [住所][建物名][電話番号][FAX番号][担当者名][メールアドレス] ここで質問があります。 クエリ作成のデザイングリッドのフィールドに [仕入先コード]を追加するとします。 [仕入先コード]は【T商品】と【T仕入先】両方にあるのですが、 フィールド名が同じならば、どちらから追加しても構わないものなのでしょうか? それとも、何か決まり事のようなものがあるのでしょうか? 基礎的な部分の質問ですが、ご存知の方がおられましたら、 どうか宜しくお願いします。

  • Accessでのクエリー作成

     テーブル 納品先コード・納品先名・商品名・数量・仕入れ先コード・仕入れ先名  となっているのを、 クエリー上で 納品先コード・納品先名・(仕入れ先別納品)数量合計・仕入れ先コード・仕入れ先名  としたいのですが、どうしたらいいでしょうか?

  • ACCESS クエリの抽出のやり方

    初投稿になります。よろしくお願いします。 無礼な事、不明瞭な事がありましたらご指導宜しくお願いします。 ACCESS2007 クエリで困っています。 テーブル_出荷 【コード{主}】【出荷先(1)】【出荷先(2)】 テーブル_明細 【コード】【種類】【数(1)】【数(2)】と構成されたテーブルがあります。 フィールド【コード】はリレーションシップで繋ぎました。 クエリで 【コード(出荷)】【種類{抽出条件:果物}】【数(1)】【数(2)】【種類{抽:野菜}】【数(1)】【数(2)】 とテーブル_出荷・テーブル_明細・テーブル_明細_1で選択クエリをつくりました。 クエリを実行すると無事表示されたのですが、後日データを更新したら 表示されなくなりました。 おそらく【コード(出荷)】に対して【種類{抽:野菜}】が存在しないレコードが出てきたからだと思います。 存在しない場合は「空白」か「0」で表示したいのですが、何か方法がないでしょうか?

  • Accessのクエリの抽出式について

    アクセスの基本しか知らないため、質問がわかりにくいかもしれませんがお教えください。 AテーブルとBテーブルがあり、共通の商品コードがあるとします。 そしてAテーブルにあるが、Bテーブルにはない商品コードがあった場合に、その該当分だけ表示できるようにしたいのです。 これはクエリで、できるものでしょうか? クエリでできるとしたら、デザインビューの画面で言うとどこをどのように設定したらいいのか、わかりやすく教えていただけたら幸いです。 この問題が解決したら、続きでもうひとつ質問したいと思っています。申し訳ありませんが、よろしくお願いいたします。

  • アクセスのクエリの作り方

    初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。

  • ACCESSのクエリの中でのクエリ指定

    ACCESSのクエリで複数テーブルを結合させ明細表示させました。 その明細作成クエリーを更にそのクエリをテーブルと指定して 合計のクエリを作成して結果を確認すると合計が違っていました。 確認の為、集計を取りその明細クエリーをクエリー上でテーブル 指定してみたところ、元の明細クエリーのみの場合とレコード数 がかわっって表示されまました。 クエリーのテーブルにクエリを指定するのはNGなのでしょうか。 何方かなぜそうなるのか、また、正しい方法があれば教えてください。 宜しくお願いします。

  • ACCESSのクエリーで

    ACCESSのクエリで たとえば下記のテーブルがあったとき コード 品名 1   商品001 3   商品003 4   商品A 7   商品BB と有ったときACCESSのクエリで 1   商品001 2 3   商品003 4   商品A 5 6 7   商品BB のようにテーブルに無いコードのところは空番にしないで 番号をだけを付けるのは可能でしょうか? もとのテーブルはいじりたくないので・・・ もし、やり方が有るならば教えてください

  • Accessのクエリでハイパーリンクの作成したい

    Access2003にて、[商品]テーブルを使って、社内の別システム上にある商品ごとの詳細ページ(IEで閲覧するページです)へのハイパーリンクをクエリで作成したいのですが、全部で1600件ほどあるデータに対して、一括で作成するにはどのような方法がよいのかわからないで、教えてください。 クエリでは[商品]テーブルにある以下のフィールドを使います。  ○[マスタNo]フィールド(数値型)  ○[商品名]フィールド(テキスト型)  ○[商品コード]フィールド(テキスト型)  ※[商品コード]フィールドは半角英数の羅列です。 別システム上のURLは[http://shouhin/iteminfo.ashx?code=[商品コード]]となっています。 上記のように、別システムの詳細ページのURLでcode=の後に続く文字列は[商品]テーブルの[商品コード]フィールドになります。 クエリでは、[商品名]フィールドに上記のURLのハイパーリンクを貼り付けるか、新たなフィールドを設けてハイパーリンクを作成するのか、どちらかを実現したいので、ご教示よろしくお願いします。

  • ファイルメーカーでアクセスクエリーみたいな作成方法

    データベースソフトのアクセスは多少知識があります。 ファイルメーカーでアクセスで言うところのクエリーはどの様に作成したらよろしいでしょうか。 例えば、従業員コードをキーとして テーブル1(従業員マスタ)  従業員コード  氏名  入社年月日 テーブル2(住所録)  従業員コード  住所 テーブル3(家族構成)  従業員コード  配偶者  扶養1 上記テーブルを3つ作成し、アクセスで言うところのクエリーみたいな感じで  従業員コード  氏名  住所  配偶者 上記レコードをまとめたテーブルを作成したい。   何か参考になる資料(本)のご紹介、もしくは教えてもらえませんでしょうか。 よろしくお願い致します。

  • Accessの不一致クエリについて

    Accessの不一致クエリについて質問があります。 ある注文リストと商品マスタを比べ、 まずテーブル作成クエリで注文リストとマスタを比べ、常備品(商品マスタにある)は出荷日に本日日付をセットしテーブル作成、次に不一致クエリでマスタにない特注品は空欄のまま先程作成したテーブルに追加をするマクロを作成しました。 すると、注文が100件、特注が2件だった場合、最初は98件が作成されますが、不一致クエリをやっても0件になります。 ちなみに商品マスタには、商品コードと3種類の規格があり、注文リストの商品コード+規格を連結、商品マスタのそれを連結させて、一致か不一致かで見ています。 不一致がどうしても0件になるのですが、解決方法はないでしょうか。 お願いします。

専門家に質問してみよう