![]() |
||
<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ![]() |
|
![]() |
||
MS-Access2000超入門部屋--いろいろなクエリ | ||
[はじめに] [AND条件] [OR条件] [または] [パラメータ] [〜以上] [〜の間] [あいまい] [YesNo] [条件組合わせ] [複数テーブル] [並べ替え] [トップ値] [集計] [「週」で集計] [クロス集計] |
Accessに限らず、昨今の「データベース」と呼ばれるものの中には、「テーブルを小分けする」考え方が根付いています。
別に何か決まりがあるわけじゃないんですが、「顧客」のデータはまとめてひとつのテーブルに、「商品」のデータはまとめてひとつのテーブルに・・・という形で、内容によって分けてデータをためていくようにテーブルの設計をするのが、Accessを使う上でのひとつのポイントですね。
で、「こっちのテーブルに顧客の住所や電話番号があって、こっちのテーブルに今月の売上のデータがあるんだけどー」という場合は、クエリでくっつけます。
作り始めるときに、くっつけたいテーブルを全部選べばいいんですけど、クエリ作り始めて途中でテーブルを追加したいときは、ツールバーの「テーブルの表示」ボタンをクリックします。
と、テーブルの一覧が出てきますので、追加したいテーブルを選びます。
こんな感じで、多分自動的に「関連するフィールド」同士を結び付けてくれてると思います。
線が出ない場合は、多分、両方のテーブルの関連性が、Accessにはわからなかった、ということでしょう。ほんとは、自動的に線が出てくれるのが理想的なんですけど、そういう構造でないテーブルを作っちゃったって場合もありますよね。
その場合は、片方から片方に、フィールド名をドラッグしてやります。
もし、結合線が自動的に出なかったら・・・ってお話ですよ。出てる場合はそのままでよいです。
結合線、ふつうの黒い線ですよね。
この状態だと、「ふたつのテーブルの両方に存在する社員番号のレコードだけ取ってくる」ことになります。
たとえば、社員テーブルには登録してないけど、臨時雇いみたいな感じの人が売り上げた伝票は出てこないし、あるいは今月1回も何も売れなかった人も、名前も出てきません。
それじゃ困る・・・という場合もあるかもしれませんね。
結合線をダブルクリックすると、両方のテーブルのくっつきかたを調べることができます。
1番は今の状態。
2番は、とりあえず売上があってもなくても、社員テーブルに登録されている人なら、売上のとこは空っぽの常態でいいから出す。
3番は、社員テーブルに登録されてない社員でもいいから、とりあえず名なしで所属ナシでいいから、売上金額だけ出す。
みたいな感じの、微妙な違いが出ます。
両方とも入ってるデータが同じなら問題ないですけどね。
これはケースバイケースで、すごく重要になってくるところだと思います。
で、あとは、両方のテーブルから、必要なフィールドを選び出してやればいい、ということになりますね。
と、こんな感じ・・・おや、「社員番号順」に並んでるみたいですね。こっちに主導権あり、と見なしているみたいですね。Accessは・・・。
「社員番号」って、両方のテーブルにありますよね・・・どっちから選んでも同じなのかな・・・。
上の結合の状態のうちの、1番のパターンなら、どっちから選んでも同じようなもんです。
レコード件数の少ない方のテーブルから選ぶ方がよいかな・・・。
2番の状態なら、社員テーブルから取るといいでしょう。
3番の状態なら、売上明細のテーブルから取ってくるといいでしょう。
別にエラーになるとかそういうわけじゃないですけど、2番の場合、もし、仮に、売上明細テーブルの方にその社員の人のレコードがなかったら・・・。社員番号のとこ、空欄になっちゃうと思いません?ヘンですよね。それだと・・。
複雑なクエリになると、この辺もいろいろ考えなくちゃいけなくなりそうですね。
![]() |
![]() |
![]() |