次の方法で共有

Access 2016 で一つのフィールドに重複出力する方法について

Anonymous
2016-12-04T09:10:58+00:00

次のクエリーの作成方法を教えてください。

住所録テーブルに「郵便番号」と「都道府県名」の二つのフィールドがあります。

この時、「都道府県名」が記入済みであれば、そのまま「都道府県名」を出力しますが、「都道府県名」が空欄であれば、「郵便番号」をキーに別の「郵便番号簿」テーブルから引っ張ってきた「都道府県名」を「同じフィールド」に出力するクエリーは、どの様に記述すれば良いでしょうか?

「都道府県名」が空欄は抽出条件:「Is Null」として「郵便番号」をキーに「都道府県名」を出力するクエリーはデザインできたのですが、「都道府県名」が記入済みのレコードと、どうデザインすれば「同じフィールド」に出力できるか分かりませんので、ご教授の方、よろしくお願いします。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2017-08-20T15:37:23+00:00

ようやくやりたいことが理解できました。

住所録テーブルの都道府県名がNullのときは、郵便番号簿の都道府県を出力(重複可)

住所録テーブルの都道府県名がのときは、住所録テーブルの都道府県を出力(重複不可)

ということですね。

下記のSQLでどうでしょうか。

SELECT

    住所録.ID,

    住所録.郵便番号 AS 郵便番号1,

    郵便番号簿.都道府県名 AS 都道府県1,

FROM

    住所録 INNER JOIN 郵便番号簿

      ON 住所録.郵便番号 = 郵便番号簿.郵便番号

WHERE

    住所録.都道府県名 IS NULL

UNION ALL

SELECT

    住所録.ID,

    住所録.郵便番号 AS 郵便番号1,

    住所録.都道府県名 AS 都道府県1

FROM

    住所録

WHERE

    住所録.都道府県名 IS NOT NULL;

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

14 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2017-08-11T09:01:28+00:00

    「郵便番号簿」テーブルの「郵便番号」は主キーになってますか。

    なっていないなら、主キーにしてください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2017-08-11T02:45:40+00:00

    津森さま、ご教授、ありがとうございます。

    先ず、教えて頂いた次の計算式をデザイングリッドのフィールド欄に直接入力したところ、ほぼ所望の結果を得ることができました。どうもありがとうございました。

    式1: IIF(IsNull([住所録.都道府県名]),[郵便番号簿.都道府県名],[住所録.都道府県名])

    但し、完全な解決ではなくて、次の通り少し困っています。

    実は仕様は、郵便番号簿から引っ張ってきた都道府県名は「住所録の都道府県名」とは別フィールド[式1]に出力することになっています。そのため、数式を次のように設定しています。

    式1: IIF(IsNull([住所録.都道府県名]),[郵便番号簿.都道府県名],Null)

    この時、住所録の「都道府県名が空欄でないレコード」がなぜか複数行、出力されています(1行だけの場合もあれば2〜6行の場合も)。そのため50万行程度の「住所録」が400万行程度に意味なく膨らんでしまっているためExcelで104万行の制限を超えたため扱えなくて困っています。重複出力されてしまう原因は何でしょうか。

    仕方がないので現状では、該フィールド[式1]の抽出条件を

    Is Not Null

    として得られた変換結果のみをExcelにエクスポートして、元々の「都道府県名が空欄でない住所録」とExcelでマージして最終的な住所録を作っています。

    これをAccessだけで作り上げる方法を知りたいのです。要は、住所録の「都道府県名が空欄でないレコード」は、単にそのまま、重複させずに出力する方法です。

    なお、クエリのデザインビュー画面のフィールドリストにて「住所録」テーブルと「郵便番号簿」テーブルの、それぞれにある「郵便番号」を結合しているのですが、その際の結合条件は、

    「住所録」テーブルの全てのレコードの出力と、「郵便番号簿」テーブルの対応する行を表示

    を選択しています。

    以上、よろしくお願いいたします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. 削除済み

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報

  4. Anonymous
    2016-12-05T06:30:14+00:00

    ​&TOKYO さん、こんにちは。

    マイクロソフト コミュニティへの投稿、ありがとうございます。

    「都道府県名」が記入されていない場合に、「郵便番号簿」テーブルから引っ張ってきた「都道府県名」を同じフィールドへ出力したいのですね。

    IIf 関数を使って条件を振り分けることで、ご希望のことが行えるかもしれません。

    IIf 関数

    式の例 : IIf(IsNull(郵便番号),他のテーブルの郵便番号参照用の式,他のテーブルの都道府県名参照用の式)

    &TOKYO さんからの返信、お待ちしています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません