• ベストアンサー

ユニオンクエリ

今 Accessを勉強中です。 ユニオンクエリとは、複数のテーブルをひとつに・・・・ という説明を見たのですが、具体的にはどんな時に利用するのでしょうか? 単純にたとえば1年生の名簿のテーブルを作成し、2年生のテーブル、3年生のテーブルを作成し、学年全部の名簿をユニオンクエリを利用するようなもの? でもこれって追加クエリでもできそうですよね? 簡単で具体的な例で教えていただけませんでしょうか?

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

  • ベストアンサー
noname#7099
noname#7099
回答No.3

例1)売上伝票の「得意先」と「売上高計」と「入金額計(0円)」 入金伝票の「得意先」と「売上高計(0円)」と「入金額計」をユニオンクエリーで一つのテーブルにしてから、選択クエリーで集計して、 「得意先」と「売上高計」と「入金額計」を持った一つのレコードが存在するがごとく利用できます。 例2)Aテーブルの「担当者」とBテーブルの「担当者」をユニオンクエリーで1つのテーブルにすると、AまたはBで使っている「担当者」が1行になって利用することができます。 例3)Aテーブルの「担当者」「カウント数」とBテーブルの「担当者」「カウント数」をユニオンクエリーで1つのテーブルにして、選択クエリーで集計してカウント数で並び替えると、AまたはBで使っている「担当者」を「カウント数順に」使うことができます。  注意しないといけないのは、ユニオンクエリーでは同一レコードが複数あれば、1レコードだけになります。  この前失敗したのは、Aテーブルのカウント数とBテーブルのカウント数がたまたま一緒で、ユニオンクエリーで1レコードになってしまい、集計されなかったことがあります。例3の場合は、本当はAテーブルとBテーブルを判別できるフィールドを追加したユニオンクエリーにする必要があります。 (判ってもらえるかなー)  たしかに追加クエリーや更新クエリーを使ってできます。(楽で早いかも)。集計のためだけに必要なので、マスタを更新したくない、新しいテーブルを作りたくない、のでユニオンクエリーを使っています。

noname#9485
質問者

お礼

回答ありがとうございます。 たくさんの例を挙げていただき、ありがとうございます。 全部試してみたいと思います。

その他の回答 (2)

noname#5645
noname#5645
回答No.2

> 簡単で具体的な例 1年生の名簿のテーブル、といっても2年生のテーブルとあまり変わりなさそうですね。 もっと簡単に言うと、テーブルのカラムが全く違うものであっても結果セットを同じに出来るということでしょう。で、たとえばこの場合両方のテーブルにある、名前と、住所だけを見たい場合はどうでしょう? たとえば、学生テーブル(ほかに学籍番号などを持っていそうです)に私の名前があったとして、教員テーブル(扶養家族コードなどを持っていそうです)に質問者さんの名前があるのをunionしたとすると select a.name, a.jyusyo from student_tbl a union select b.name, b.jyusyo from teacher_tbl b order by 1 結果セットは name | jyusyo ************************* angel     | ○○県 liberalist    | 神奈川県 となって出てくるのです。 名前と住所だけをセレクトして結果セットを整えることが出来るのがメリットなんじゃないかなぁ・・・。 ですから結果セットを整えるために、ダミーを入れたりもしました。 ちなみにaccessでもこういう使い方が出来るのかは自信ありません。

noname#9485
質問者

お礼

回答ありがとうございます。 SQLソースまで記述していただきありがとうございます。 これからもまた、勉強します。

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.1

そうですね。追加クエリでも出来ます。 ただ、追加クエリと違うところは、ユニオンクエリで得られるレコードセットは自動的にスナップショットに設定されるため、データの更新が出来ません。 その瞬間のみの追加クエリ、とご理解なさるといいかも。

noname#9485
質問者

お礼

ありがとうございます。 瞬間のみの追加クエリ・・・ そう、捕らえると分かりやすいですね。

関連するQ&A