FC2ブログ

選択クエリー(その2)

前回までで一通りのクエリーは紹介しましたが、今回以降更にいろいろなパターンで理解を深めていきたいと思います。そのためにはよりバリエーションのあるテーブルが必要なので、以下のようなテーブルをデザインしました。

以下は 販売管理でよく使われる注文書のテーブルです。本来なら、会社名はコード化し、得意先テーブル等と連結しますし、商品も商品テーブルと連結し、種類・単価も商品テーブルの方に持つのが一般的ですが、ここでは話を簡単にするために、単一のテーブル内に全て内蔵することにします。

注文書テーブル 

以下が実際に格納されているデータとします。

注文書テーブル(結果)

以下は学籍管理等で使用される成績表テーブルです。番号は生徒番号の事です。実際には生徒名簿テーブルと連携する必要があります。それと試験を識別するために試験コードとか試験日を追加するべきですが、練習用に単純な構造にしました。

成績表テーブル 

以下がデータの内容です。着目しておいて欲しいのは所々点数が入っていないものがあるという事です。

成績表テーブル(結果) 

今後は上記で追加したテーブルも使用して例題を解いていきます。

1.T_生徒番号の「生年月日」が1970年以降の生徒を抽出する。

 選択クエリー  

生年月日の年を取りだすには既に何度か紹介していますが、Year()関数を使用します。ACCESSの関数はフォーム・レポートのコントロースソース、クエリーのフィールド欄・抽出条件欄、更にVBのコード内などいろいろな場面で使えますが、使い方は全く同じなので関数をマスターすると応用力がぐんと増します。

1970年以降という条件に関しては抽出条件欄に不等号で表します。左辺がフィールド欄に当たると考えて下さい。

結果は以下のようになります。

選択クエリー(結果) 

2.T_生徒番号の生年月日が1960年代の生徒を抽出し、生年月日の昇順で並び替える。

選択クエリー  

1.の応用になりますが、1960年代というのが複合条件として表します。複合条件の表し方は本来なら(SQLの構文であれば)、以下のようになります。

Year([生年月日])>=1960 And Year([生年月日])<=1969

ACCESSのクエリーでは比較対象に当たる部分(左辺)がフィールド欄に表示されることになります。

ここで気を付けたいのは「昇順」の指定を「生年月日」対してした場合と、「Year([生年月日])」にした場合では結果が変わってくるという事です。仮に「Year([生年月日])」の方に「昇順」指定をした場合は、年に対してのみ昇順にするという事になり、同一年で月日が違った場合は順序が不定になります。

結果は以下のようになります。

選択クエリー(結果) 

次回も引き続き選択クエリーの例題を解いてみます。
関連記事
スポンサーサイト



テーマ : データベース
ジャンル : コンピュータ

コメントの投稿

非公開コメント

最新記事
全記事表示リンク

全ての記事を表示する

月別アーカイブ
カテゴリ
お問い合わせ
まずはこちらのフォームより御一報下さい。

名前:
メール:
件名:
本文:

検索フォーム
RSSリンクの表示
アクセスランキング
[ジャンルランキング]
コンピュータ
677位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
96位
アクセスランキングを見る>>
ブログランキング

FC2Blog Ranking