トップ > Access2007目次 > クエリの作成
1)2)3)4)

3) クエリの作成

では、Accessの立役者、クエリを作成してみましょう。

クエリというオブジェクトは、「問い合わせ」という意味の「Query」という単語から名づけられたと言われています。突き詰めていくとその通りなんですが、画面の中を見ているだけでは「どこが問い合わせなの?」と今ひとつ実感がわかないと思います。
ぜひとも、画面の奥で、テーブルにお伺いを立てて、条件にあったデータをテーブルからいただいてきて画面に表示するクエリ君の仕事ぶりを想像してください。
クエリは特に想像力を働かせないと習得が難しいのですが、リレーショナルデータベースの真髄でもありますので、これを理解しているのとしていないのとでは、あっちとこっちくらいの差があります。
あっちってどっちだって?なかなか面白いこと言いますね。こりゃ一本とられたな。

ここでは、前のページの「複数の値の許可」の主な活用例をご紹介します。
さらに、「クエリの作成手順」の説明も兼ねておりますぞ。

 

1クエリの作成

操作中タブメニューの「作成」をクリックすると、リボンの右端にクエリ関連のメニューが表示されます。
(「その他」という分類になってますが)
クエリの作り方には、「ウィザード」と「最初から手作り」があるんですが、最初は手作りで作ったほうがお奨めです。たぶん、ウィザードだと、何をやってるのかちっとも理解できないです。まずは手作りでクエリの基本をしっかりマスターし、お好みでウィザードを活用したほうがいいですよ。
図1:クエリの新規作成手順 まずはこれ
すると、右図のような画面になります。奥に「クエリ1」というタブ付きの画面が出ていて、その手前に「テーブルの表示」という小さいウィンドウが出ているところに注目してください。
その上で、手前の「テーブルの表示」というウィンドウに注目してください。この中から、このクエリで使いたいテーブルを選択します。
で、今回は、「社員テーブル」と「資格テーブル」の二つを選びたいです・・・と、いう状況下での作業をしますよ。

どちらから選んでもいいのですが、一応、このクエリの中で中心となるテーブルから選んだほうがいいです。まあ、リレーショナルデータベースの世界ではそうする人が多いってことで、それなりの理由があるんですが、最初はあまりこういうところに食いつかずにシンプルに覚えていったほうがいいでしょう。
図2:クエリのデザイン画面の一番最初はこんな感じ

 

操作中「テーブルの表示」の中から、「社員テーブル」をダブルクリックします。

そうすると、奥に「社員テーブル」という小さなウィンドウが出てくるはずですので、確認してくださいね。
何度もダブルクリックすると、「社員テーブルxx」という小さいウィンドウがいっぱいできてしまうので、ダブルクリックは一回だけですよ。

これが”テーブルを選択する”っていう動作になります。
図3:今回は「社員テーブル」から選ぼう

 

操作中同じ要領で、「資格テーブル」をダブルクリックします。奥に「資格テーブル」というウィンドウができたことを確認してください。
図4:二つ目のテーブルも選ぶ

 

操作中「テーブルの表示」ウィンドウの「閉じる」ボタンをクリックして、このウィンドウを閉じます。
図5:テーブルを選び終わったら、「テーブルの表示」は閉じるのさ

 

すると、「テーブルの表示」ウィンドウは消えて、クエリのデザインウィンドウが前面に表示されます。
画面の中をよく観察しておいてくださいね。
上半分が、このクエリのもとになるテーブルに関する情報が表示されるところ。下半分が、これらのテーブルからどんな感じでデータを取り出すかを指定するところです。
図6:これがクエリのデザインウィンドウですぞ。

2テーブルの同士の結合

テーブルひとつだけで作るクエリ、というのもあるのですが、今回は二つ選んでいます。
二つ以上のテーブルからデータを取り出すクエリを作るときは、テーブル同士の結びつき方を指定します。画面の上半分に注目してください。
それと、前のページのルックアップの解説も思い出してくださいね。
「社員テーブル」の「資格」フィールドと、「資格テーブル」の主キーが結びつくようにしますよ。
操作中「社員テーブル」の「資格」フィールドから、「資格テーブル」の「資格」フィールドに向けてドラッグします。

今回、「社員テーブル」の「資格」フィールドは、「複数の値の許可」という設定になっているので、右図のように「資格.Value」という表示になっています。
ドラッグの出発点はこの「資格.Value」です。

◆テーブル結合の様子をMedia Playerで見る◆
図7:ここからあそこに向けてドラッグだ

 

ドラッグすると、二つのテーブルの間に線が表示されるようになります。この線が、このクエリでもっとも重要な役割を果たします。

もし間違って別のフィールド同士を結合させてしまったら、一旦結合線を削除してから、再度ドラッグしましょう。結合線はクリックすると選択できます。選択した状態でDeleteキーを押せば消えますよ。
できれば、 やり直しをしなくてもいいように、慎重にそっとドラッグしてくださいね。
図8:二つのテーブルが結びついたナリ

 

3フィールドの選択

次に、この二つのテーブルから取り出すフィールドを選び出します。
どのフィールドを選ぶかは、どういうクエリを作るかとか状況によって異なりますから、選んだフィールドの名前じゃなくて、フィールドの選び出し方を覚えてくださいね。
操作中「社員テーブル」の「社員番号」フィールドにマウスポインタを合わせ、右図の要領で、画面下部分の一番左端の欄までドラッグします。

同様の要領で、以下のフィールドも選びましょう。

■社員テーブルから 「社員名」
■資格テーブルから 「資格名」
■資格テーブルから 「手当」


◆フィールドを選ぶ様子をMedia Playerで見る◆
図9:ドラックだっっす

 

選択できました?
これで、クエリの土台ができました。

まだ名前をつけて保存していない状態ですので、早いうちに名前をつけて保存して、続きはそれからでもいいんですが、もうちょっと操作してからでもいいかな、と思います。
名前は後で付けるとして、とりあえず、このクエリを実行したら(開いたら)どうなるのか、見てみることにしましょう。
図10:これでだいたい完成

 

4クエリを実行する

今作っているクエリは、「選択クエリ」という種類のクエリで、もっともポピュラーなものです。なので、”選択”は省略して、単に「クエリ」と呼ぶことが多いですね。
テーブルからデータを抽出して画面に(データシートビューの状態で)表示する、というタイプのクエリです。
では、このクエリを実行して、結果を見てみましょう。
操作中リボンの一番左端に「表示」というボタンがありますので、これをクリックします。

選択クエリの場合は、右隣にある「実行!」ボタンのクリックでもOKです。
テスト表示っぽいときは「表示」のほうが、気分的に気軽な感じがしていいかも。
図10:選択クエリを実行するアル

 

操作中作りかけの「クエリ1(仮)」の実行結果です。
選択クエリを”実行する”(または”開く”)と、こういう状態になります。

何がありがたいのかわからない、という方も多いでしょうが、とりあえず、ここまでのクエリの作成手順は抑えてください。で、改めて、画面の中を観察しましょう。

このクエリを通して、どんなことを知りたいのか、という話になってくるんですが、まあ、今日は練習ですからそんなこと言われても皆さんこまっちゃいますよね。なので、私からテーマをお出ししようと思います。おほん。
みんなそれぞれどんな資格を持っているのか、そして、手当の総額はそれぞれいくらなのか、そういうことを知りたいです。ね?知りたいですよね?
図11:選択クエリの実行結果はデータシートビューで

 

まず、社員ごとに並べ替えて、データを整理したいですね。
では、社員ごとに揃えて表示ましょう。
この画面でちゃちゃっと並べ替えちゃってもいいのですが、クエリのデザインを変えるところからやりましょう。

操作中画面左上の「表示」ボタンをクリックします。
左上に、お馴染みの絵柄がありますよね。
図12:デザイン画面に戻る・・・お馴染みのこの絵柄

 

5並べ替えの指定

操作中画面下部分の左端「社員番号」フィールドの欄の、「並べ替え」をクリックし、「昇順」を選択します。
単に、社員別に揃えるだけなら、どちらでもいいのですが、ならば小さいもん順のがいいかなぁと思ったもんで・・・。

※昇順: 小さいもん順    降順: 大きいもん順
図13:昇っていく並び順と、降りてくる並び順。どちら?

 

操作中もう一度このクエリを実行して、結果を確認しましょう。 先ほどと、並び順が変わっていると思います。

このほうが、誰がどんな資格を持っているか、わかりやすいですね。

では、次に、手当の合計額を出しましょう。
今のままでも、頭の中で足し算すれば出せないことはないですが、足し算はAccessにやってもらいましょう。
「各社員の資格手当額の合計を出すクエリ」と、目的がはっきり定まれば、クエリ作りもいい感じで進めることができます。

では、再びクエリのデザインの画面に戻りましょう。
図14:図11とどっちが、誰が資格をたくさん持っているかわかりやすい?

 

6「集計クエリ」 にする

操作中画面右上の方、リボン上に「集計」というボタンがあります。シグマのボタンです。これをクリックします。
図15:この選択クエリを「集計クエリ」に変えるみたいな

 

すると、画面下部分に「集計」という行が増えるはずなので、確認してください。もう一度図15の「集計」をクリックすると、この行は消えます。
最初は、”グループ化”という表示になっていることも確認してくださいね。
図16:これがクエリデザインの”集計行”だ

 

操作中集計方法を変更します。
「社員番号」と「社員名」はそのままで、「手当」だけ「合計」という集計方法に変更します。


変更できたら、再度、クエリを実行して結果を見てみましょう。
図17:社員ごとの手当の合計を出したいので、こうなるのだ

 

どんな変化があったか、画面の中を観察してくださいね。手当の合計、表示されてますか?

「社員番号」と「社員名」は、同一人物の情報なので、どちらか一方だけの表示でもいいんです。でも、社員番号だけだと、誰だかぱっと見わからないし、社員名だけだと、並べ替えがすっきりしない※。なので、両方選んで横並びになるようにしました。

※漢字の場合はほぼ、音読みで並び変わってしまうので、この中だとたぶん・・・伊達さんが一番上にくるかも。「伊=い」だから。とにかく、私たちの思惑通りに並んでくれるとは限らないのです。
図18:各社員がどれくらい手当をもらってるのかチェーック!

 

と、こんな感じで、基になるテーブル (「社員テーブル」&「資格テーブル」) から、得たい情報を出すために、あれこれ指定して、実行してみて、またデザインの画面に戻ってあれこれやった、実行して・・・と、そんな作業がクエリの作成手順になります。
で、デザインのウィンドウの中で指定した、テーブルの結合とか、フィールドの選び出しとか、集計とか、もろもろの設定をまとめて、「クエリの定義」なんて呼ぶこともあります。「クエリの定義」って言われたら、このデザインの画面で確認できる内容のことだと思ってください。

もういっちょテコ入れしてみましょうか。
この結果を見てお気づきの方もいらっしゃるかもしれませんが、今表示されているのって、全員じゃないんですよね。
表示されていない人もいるんですが、気付きました?
今のクエリのデザインだと、「社員テーブル」と「資格テーブル」の両方に存在する値を表示するってことになってるんです。両方のテーブルを結び付けているのは「資格」フィールドですから、何も資格を持っていない社員は表示されないんですよ。
でも、資格を持っていないならいないで、表示されたほうがいいなぁ・・・って場合も、ありますよね。
そこで、資格を持っていない社員の名前も表示されるようなクエリにしましょう。

 

7結合方法の変更

操作中デザイン画面に戻り、テーブル間に表示されている結合線をうまくダブルクリックしてください。

線が細く、ダブルクリックするのはちょっと難しい・・・という方は、一度クリックしてみてください。右図のようにちょっぴり線が太くなるので、ダブルクリックしやすくなるでしょう。
図19:結合線をダブルクリーック!

 

操作中「結合プロパティ」が表示されます。

2.社員テーブルの全レコードと、資格テーブルの同じ結合フィールドのレコードだけ含める。

をクリックして選択し、OKボタンをクリックします。
図20:

 

操作中もう一度、クエリを実行します。

資格を持っていない社員の名前も表示されるようになりました。


ここまでくると、
「空白じゃなくて、ゼロ円とか表示できないの?」
とか、いろいろアイディアが湧きそうなところですが、今日はこの辺にしておきましょう。
図21:資格を持っていない奴の名前も出てくるようになったぜ

 

とにかく、クエリというものは、テーブルからデータ引き出して、目的に合わせた表示をするためのオブジェクト、ってことなんですが、うまくイメージできました?
Accessを長年使っている人の中には、クエリをうまく理解できずに、実はあんまり使いこなせていない人も結構いるんです。「自分は何でもVBAでやっちゃうんで、クエリってあんまり使わないんですよね。ハハハ」とか、とんちんかんなことを言っている人、時々見かけます。
VBAで・・・っていう単語が出てくると、「すごい上級者なんだ」って勘違いする人もいるんですが、的が外れてますからね。
VBAを使いこなすためには確かに高度な知識が必要かもしれませんが、「自分はVBAでやっちゃうんで、クエリってあんまり使わないんですよね。ハハハ」ってクダリは、「私はゆで卵から生卵を作る技術を持っている」って自慢しているようなもんです。
すごい技術ですけどね。
永久に時間が余っていて、納期とか他の人の都合とか考えない岩窟王なら、「VBAで何でもやっちゃう」で済まされるかもしれませんから、ある意味、いい身分の人かもしれませんね。こういうこと言う人。
ああ、でも、こういうこと言ってる人を見かけても、つっかかったらダメですよ。何か指摘しようものなら付きまとわれますよ。自分が一番Accessに詳しいと思ってる人ですから。何回かうなずいて、そっと視線をそらしましょう。
操作中では、このクエリに、名前をつけて保存しましょう。クエリの作成作業は今日のところはこの辺で一段落です。またいずれ、いろいろなクエリ、作ってみましょう。

クエリも、フォームやテーブルと同じで、一番最初に保存するときに名前をつけます。
オブジェクトの保存のときにクリックしてたあのボタン、覚えがありますか?
図22:このクエリも保存しよう

 

8クエリの名前について

ちょっとだけ余談です。
クエリの生をつけて保存した後、ナビゲーションウィンドウを見てみると、アイコンの形の違いはあるものの、テーブルとクエリの区別がつきにくいことにお気づきではないかと思います。え?気付かなかった?がんばって気付いてください。

実は、選択クエリとテーブルとは、扱いが似ていて、区別がつきにくいので、区別しやすい名前の付け方をしておいたほうが何かと便利なんです。
Accessの本などで、T_社員マスタ とか Q_分類選択 とか、先頭に半角のTとかQとかFとか、オブジェクトの頭文字を付けてるケースがよくあるんです。これは、別にそういう名前をつけなくちゃいけないということではなくて、区別しやすいから、っていう理由なんですよ。決まりはありません。
私は、クエリにはQを付けることが多いですが、他のオブジェクトには付けないですね。
図23:ナビゲーションウィンドウ

 

じゃあ、後から名前を変えられるのかといういうと、そりゃもちろん、変えられますよ。ナビゲーションウィンドウで右図のように右クリックすれば、ファイル名やフォルダ名を変えるのと同じような感じで、オブジェクト名を変えることもできます。

ただ、名前は後からコロコロ変えないほうがいいので、変えるならなるべく早いうちに変えておきましょう。
今ならまだ、作り立てですから、このクエリを基にしたフォームとかもありませんし、名前を変えても影響ないはずです。


↓こんな感じにしておくと、後で区別しやすいので、お奨めです。
図24:名前は変えられるが、十分注意して

 

オブジェクト同士、名前で結びつきあって動作するものなので、後から名前を変えると、正しく動作しなくなってしまう場合があります。ほとんど、Accessがうまく処理してくれるんですが・・・・。
まあ、なんにしても、後からひょいと名前を変えるのはAccessの操作に熟知しからってことで、慣れないうち、どこに動影響するか自分で見当が付かず自己対応できない可能性があるうちは、「オブジェクト名は後からコロコロ変えるもんじゃないんだ」と思っといてください。

このページのまとめなど

  • クエリの新規作成  フォームやテーブルに比べると、リボンの端っこの方にメニューがあってチョット見つけにくい。
  • クエリとは、テーブルからデータを取り出すためのいろいろな設定やらをまとめたものである。
  • 一番一般的なクエリは選択クエリという。テーブルから取り出したデータをデータシートビューで表示する。
  • クエリとテーブルは区別しやすい名前を付けるようにしよう。オブジェクトの名前の付け方、案外大事です。
Next Step!!!
  • フォームを作る  やはり、ひとつくらいフォームを・・・「社員テーブル」のデータを見るフォームを作ります。
作成日:2008-12-29

コピーライト