1 つまたは複数のソースから特定のデータを選択するときに、選択クエリを使用できます。 選択クエリは、必要なデータのみを取得する場合や、いくつかのデータ ソースからのデータを結合する場合に便利です。 選択クエリでは、データ ソースとしてテーブルとその他の選択クエリを使用できます。 このトピックでは選択クエリの概要について説明し、クエリ ウィザードやデザイン ビューを使用して選択クエリを作成する手順を紹介します。
Northwind サンプル データベースを使用してクエリのしくみを確認する場合には、「クエリの概要」をご覧ください。
この記事の内容
概要
データを使用する場合、1 つのテーブルのすべてのデータを使用することはめったにありません。 たとえば、連絡先テーブルのデータを使用する場合は、通常、1 つの特定のレコード、または電話番号だけを調べます。 顧客情報と注文情報の組み合わせなど、複数のテーブルのデータを結合したい場合があります。 使用するデータを選択するには、選択クエリを使用します。
選択クエリは、 データシート ビューに情報を表示するデータベース オブジェクトです。 クエリはデータを格納せず、テーブルに格納されているデータを表示します。 クエリでは、1 つ以上のテーブル、他のクエリ、または 2 つの組み合わせからのデータを表示できます。
クエリを使用する利点
クエリでできること:
-
見たいフィールドのデータだけを表示する。 テーブルを開くと、すべてのフィールドが表示されます。 クエリは、選択したフィールドを保存する便利な方法です。
注: クエリはデータをポイントするだけで、データを格納しません。 クエリを保存するときに、データのコピーが保存されるわけではありません。
-
いくつかのデータ ソースからのデータを結合する。 テーブルには通常、テーブルに保存されているデータのみが表示されます。 クエリを使用すれば、さまざまなソースのフィールドを選択し、情報の組み合わせを指定できます。
-
フィールドとして式を使用します。 たとえば、Date 関数をフィールドとして使用したり、フィールドと共に Format 関数を使用して、フィールドのデータをクエリ結果で書式設定する方法を制御したりできます。
-
指定した抽出条件を満たすレコードを表示する。 テーブルを開くと、すべてのレコードが表示されます。 クエリは、選択したレコードを保存する便利な方法です。
選択クエリ作成の基本的手順
選択クエリを作成するには、クエリ ウィザードを使用するか、クエリ デザイナーで操作します。 ウィザードの場合、一部のデザイン要素は使用できませんが、このような要素は後でデザイン ビューで追加できます。 2 つの方法はある程度異なっていますが、基本的な手順は本質的には同じです。
-
データ ソースとして使用するテーブルまたはクエリを選択します。
-
データ ソースから含めるフィールドを指定します。
-
必要に応じて、クエリから返されるレコードを制限する条件を指定します。
選択クエリを作成したら、それを実行して結果を表示します。 選択クエリを実行するには、データシート ビューでクエリを開きます。 クエリを保存する場合は、フォーム、レポート、または別のクエリのデータ ソースとして、必要なときにいつでも再利用できます。
クエリ ウィザードを使用して選択クエリを作成する
クエリ ウィザードを使用し、選択クエリを自動的に作成できます。 このウィザードを使用する場合、クエリ デザインを細かく設定することはできませんが、ウィザードを使用しない場合に比べて、通常はクエリが短時間で作成されます。 また、ウィザードの場合、設計上の単純な間違いが検出され、別の操作を実行するように求められることがあります。
始める前に
互いに関連しないデータ ソースのフィールドを使用する場合、クエリ ウィザードでは、リレーションシップを作成するかどうかについて確認が求められます。 リレーションシップ ウィンドウが自動的に開きますが、リレーションシップを編集する場合、ウィザードを再起動する必要があります。 そのため、ウィザードを実行する前に、クエリで必要となるリレーションシップがあればそれを作成することを検討してください。
テーブル リレーションシップの作成方法については、「テーブルのリレーションシップの概要」を参照してください。
クエリ ウィザードを使用する
-
[作成] タブの [クエリ] グループで [クエリ ウィザード] をクリックします。
-
[新しいクエリ] ダイアログ ボックスの [選択クエリ ウィザード] をクリックし、[OK] をクリックします。
-
次に、フィールドを追加します。 最大 32 個のテーブルまたはクエリから最大 255 個のフィールドを追加できます。
フィールドごとに、以下の手順を実行します。
-
[テーブル/クエリ] で、フィールドが含まれるテーブルまたはクエリをクリックします。
-
[使用可能なフィールド] で、フィールドをダブルクリックし、[選択したフィールド] リストに追加します。 すべてのフィールドをクエリに追加する場合、右向き矢印が 2 つ付いたボタン (>>) をクリックします。
-
必要なフィールドをすべて追加したら、[次へ] をクリックします。
-
-
数値フィールド (数値データが含まれるフィールド) を追加しなかった場合、手順 9 に進んでください。 数値フィールドを追加した場合、クエリで詳細を取得するか集計データを取得するかについて確認を求められます。
次のいずれかの操作を行います。
-
個々のレコードを表示する場合、[詳細] をクリックし、[次へ] をクリックします。 手順 9 に進みます。
-
平均値などの集計された数値データを表示する場合、[集計する] をクリックし、[集計のオプション] をクリックします。
-
-
[集計のオプション] ダイアログ ボックスで、集計するフィールドとデータの集計方法を指定します。 数値フィールドのみが表示されます。
数値フィールドごとに、次の関数の 1 つを選択します。
-
合計 クエリは、フィールドのすべての値の合計を返します。
-
平均 クエリは、フィールドの値の平均を返します。
-
分 クエリは、フィールドの最小値を返します。
-
最大 クエリは、フィールドの最大値を返します。
-
-
クエリの結果にデータ ソースのレコード数を含める場合、適切な ["データ ソース名" のレコードをカウントする] チェック ボックスを選択します。
-
[OK] をクリックして [集計のオプション] ダイアログ ボックスを閉じます。
-
日付/時刻フィールドをクエリに追加しなかった場合、手順 9 に進んでください。 日付/時刻フィールドをクエリに追加した場合、クエリ ウィザードでは、日付値をグループ化する方法について確認が求められます。 たとえば、数値フィールド ("Price") と日付/時刻フィールド ("Transaction_Time") をクエリに追加した後、[集計のオプション] ダイアログ ボックスで、数値フィールド "Price" の平均値を表示するように指定します。 日付/時刻フィールドを含めたため、一意の日付/時刻値、日、月、四半期、年ごとに集計値を計算できます。
日付と時刻の値をグループ化するために使用する期間を選択し、[次へ] を選択します。
注: デザイン ビューでは式を使用し、任意の期間別にグループ化できますが、ウィザードの場合、選択肢が限定されています。
-
ウィザードの最後のページで、クエリにタイトルを付け、クエリを開くか、変更するかを指定し、[完了] をクリックします。
クエリを開くと、選択したデータがデータシート ビューで表示されます。 クエリを変更する場合、クエリがデザイン ビューで開きます。
デザイン ビューで作業し、クエリを作成する
デザイン ビューを使用し、選択クエリを手動で作成できます。 デザイン ビューを使用すると、クエリをより細かく設計できますが、設計上の間違いを犯しやすく、また、ウィザードの場合よりも時間がかかります。
クエリを作成する
手順 1: データ ソースを追加する
デザイン ビューを使用してデータ ソースを追加する場合は、別の手順でデータ ソースとフィールドを追加します。 ただし、必要であれば、後でデータ ソースを追加できます。
-
[作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。
-
使用する各データ ソースをダブルクリックするか、各データ ソースを選択して、[ 追加] をクリックします。
自動結合
データ ソースを追加するとき、ソース間に既にリレーションシップが定義されている場合、そのリレーションシップは結合としてクエリに自動的に追加されます。 結合により、関連ソースのデータの組み合わせ方法が指定されます。 また、Access では、フィールドに互換性のあるデータ型が含まれ、1 つのフィールドが主キーの場合、2 つのテーブルの結合が自動的に作成されます。
場合によっては、Access で自動作成された結合を自分で調整します。 Access では、結合が表す関係に基づき、作成する結合の種類が決定されます。 Access で結合が作成されるとき、リレーションシップが定義されていない場合、内部結合が作成されます。
Access でデータ ソースの追加時に正しい結合が自動的に作成される場合、手順 3:出力フィールドを追加するに進むことができます。
同じデータ ソースを数回使用する
場合によっては、結合されたフィールドに一致する値があるときに同じテーブルのレコードを結合する、 自己結合と呼ばれる同じテーブルまたはクエリの 2 つのコピーを結合する必要があります。 たとえば、各従業員のレコードの [ReportsTo] フィールドに名前ではなく上司の ID が表示される Employees テーブルがあるとします。 自己結合を使用して、代わりに各従業員のレコードにマネージャーの名前を表示できます。
データ ソースの 2 回目の追加が行われると、Access は、2 番目のインスタンスの名前に _1 を付加します。 たとえば、Employees テーブルを 2 回追加した場合、2 番目のインスタンスの名前は Employees_1 となります。
手順 2: 関連するデータ ソースを結合する
クエリに追加するデータ ソースに既にリレーションシップがある場合、リレーションシップごとに内部結合が自動的に作成されます。 また、参照整合性が適用されている場合、一対多リレーションシップの "一" 側のテーブルを示す "1" と "多" 側のテーブルを示す無限記号 (∞) が結合線の上に表示されます。
クエリにクエリを追加するとき、クエリ間にリレーションシップが作成されていない場合、クエリ間で、またはクエリと関連していないテーブルの間で結合が自動作成されることはありません。 データ ソースの追加時、結合が自動作成されない場合、通常は自分で追加する必要があります。 他のデータ ソースに結合されていないデータ ソースは、クエリ結果で問題を引き起こす可能性があります。
内部結合から外部結合に結合の種類を変更すると便利な場合もあります。クエリに含まれるレコードが増えます。
結合を追加する
-
結合を追加するには、1 つのデータ ソースのフィールドを、別のデータ ソースの対応するフィールドまでドラッグします。
2 つのフィールド間に線が引かれ、結合が作成されたことが示されます。
結合を変更する
-
変更対象の結合をダブルクリックします。
[結合プロパティ] ダイアログ ボックスが表示されます。
-
[結合プロパティ] ダイアログ ボックスで 3 つのオプションを確認します。
-
使用するオプションをクリックし、[OK] をクリックします。
結合に問題がなければ、出力フィールドを追加します。出力フィールドとは、クエリ結果に表示するデータが含まれるフィールドです。
手順 3: 出力フィールドを追加する
手順 1 で追加したデータ ソースからフィールドを簡単に追加できます。
-
フィールドを追加するには、クエリ デザインの上ウィンドウにあるデータ ソースのフィールドを下ウィンドウにあるデザイン グリッドの [フィールド] 行までドラッグします。
この方法でフィールドを追加すると、デザイン グリッドの [テーブル] 行に自動入力され、フィールドのデータ ソースが反映されます。
ヒント: クエリ デザイン グリッドの [フィールド] 行にすべてのフィールドを簡単に追加するには、上ウィンドウにあるテーブルまたはクエリの名前をダブルクリックしてそのソースの全フィールドを強調表示し、デザイン グリッドまで同時にドラッグします。
式を出力フィールドとして使用する
計算を実行するか、関数を使用してクエリの出力を生成する場合、式を出力フィールドとして使用できます。 式では、クエリ データ ソースからのデータや関数 (Format や InStr など) を使用できるほか、定数や算術演算子を含めることもできます。
-
クエリ デザイン グリッドの空白の列で、[フィールド] 行を右クリックし、ショートカット メニューの [ズーム] をクリックします。
-
[ズーム] ボックスに式を入力するか、貼り付けます。 式の出力で使用する名前を式の先頭に追加し、その後にコロンを続けます。 たとえば、式に "Last updated" というラベルを付けるには、式を Last updated: から始まる名前にします。
注: 式を使用すれば、さまざまなことが可能になります。 式に関する詳しい説明については、この記事では取り上げません。 式の作成方法については、「Build an expression」 (式を作成する) を参照してください。
手順 4: 抽出条件を指定する
この手順は省略可能です。
抽出条件を使用すれば、クエリで返されるレコードを絞り込むことができます。指定した条件を満たすフィールド値が返されます。
出力フィールドの抽出条件を指定する
-
クエリ デザイン グリッドで、制限する値があるフィールドの [ 抽出条件 ] 行に、結果に含めるためにフィールド値が満たす必要がある式を入力します。 たとえば、フィールド City の値が Las Vegas のレコードのみにクエリを制限する場合は、そのフィールドの [抽出条件] 行に「Las Vegas」と入力します。
「クエリの抽出条件の例」をご覧ください。さまざまなデータ型のクエリ抽出条件の例がたくさんあります。
-
[抽出条件] 行の下にある [または] 行に別の抽出条件を指定します。
別の抽出条件を指定する場合、一覧にある条件のいずれかをフィールド値が満たせば、クエリ結果に含まれます。
複数のフィールドの抽出条件
複数のフィールドで抽出条件を使用できます。 その場合、[抽出条件] 行または [または] 行のすべての条件が真にならないとレコードは含まれません。
出力を必要としないフィールドを使用し、抽出条件を指定する
クエリ デザインにフィールドを追加し、そのフィールドのデータをクエリ出力に含めないようにできます。 表示しないフィールドの値を使用してクエリの結果を絞り込む場合にこれを行います。
-
デザイン グリッドにフィールドを追加します。
-
フィールドの [表示] 行で、チェック ボックスの選択を解除します。
-
出力フィールドの場合と同様に、抽出条件を指定します。
手順 5:データを集計する
この手順は省略可能です。
特に対象のデータが数値である場合は、データを集計することが必要な場合があります。 たとえば、平均価格または売上合計を表示する場合を例にとります。
クエリでデータを集計するには、[集計] 行を使用します。 既定では、[集計] 行はデザイン ビューに表示されません。
-
クエリをデザイン ビューで開いた状態で、[クエリ デザイン] タブの [表示/非表示] グループで [合計] をクリックします。
Access では、クエリ デザイン グリッドに [集計] 行が表示されません。
-
集計するフィールドごとに、[集計] 行で使用する関数を一覧から選択します。 使用できる関数は、フィールドのデータ型によって異なります。
クエリの行の合計機能の詳細については、「Totals 行を 使用してデータシートに列の合計を表示する」の記事を参照してください。
手順 6: 結果を表示する
クエリの結果を表示するには、[ クエリ デザイン ] タブで [ 実行] をクリックします。 データシート ビューにクエリの結果が表示されます。
クエリをさらに変更するには、[ホーム]、[表示]、[デザイン ビュー] の順にクリックし、デザイン ビューに切り替えます。
フィールド、式、抽出条件を変更し、必要なデータが返されるまでクエリを再実行します。