この記事は、Access SQL に関するセットの一部です。
SELECT句の書き方を説明し、使用できる手法の例を示します。
Access SQL の概要については、「Access SQL: 基本的な概念、用語、および構文」の記事を参照してください。
この記事の内容
フィールドを選択する: SELECT 句
SELECT ステートメントは通常、SELECT句で始まります。 この句を使用して、クエリに必要なデータを含むフィールドを指定します。 フィールドの代わりに、またはフィールドに加えて式を使用することもできます。 別の SELECT ステートメントをフィールドとして使用することもできます。 これはサブクエリと呼ばれます。
顧客の電話番号を知りたいとします。 これらの数値を格納するフィールドの名前が txtCustomerPhone の場合、 SELECT 句は次のようになります。
SELECT [txtCustomerPhone]
名前は角かっこを使用して囲むことができます。 名前にスペースや特殊文字が含まれていない場合、角かっこは省略可能です。 その場合は、それらを使用する必要があります。
ヒント
スペースを含む名前は読みやすく、フォームやレポートをデザインするときに時間の節約につながる可能性がありますが、SQL ステートメントの作成時には入力が増えることがあります。 Access データベースのオブジェクトに名前を付けるときは、この点を考慮してください。
SQL ステートメントに同じ名前のフィールドが 2 つ以上ある場合は、 SELECT 句に各フィールドのデータ ソース名を追加します。
FROM句で使用するのと同じデータ ソース名を使用します。
すべてのフィールドを選択する
データ ソースのすべてのフィールドを含める場合は、 SELECT 句に個別に一覧表示するか、アスタリスク ワイルドカード文字 (*) を使用できます。 アスタリスクを使用すると、Access によって、クエリの実行時にデータ ソースに含まれるフィールドが特定され、そのすべてが含まれます。 これにより、新しいフィールドがデータ ソースに追加されたときにクエリが最新の状態に保たれます。
SQL ステートメントでは、1 つ以上のデータ ソースにアスタリスクを使用できます。 複数のデータ ソースにアスタリスクを使用する場合は、Access で使用するソースを決定できるように、データ ソース名にアスタリスクを含めます。
たとえば、 Orders テーブルからはすべてのフィールドを選択し、 Contacts テーブルからは電子メール アドレスだけを選択したいとします。
SELECT句は次のようになります。
SELECT Orders.*, Contacts.[E-mail Address]
注
アスタリスクをどの時点で使用したかを覚えておく必要があります。 計画していなかった場合は、後で他のユーザーが新しいフィールドをデータ ソースに追加した場合、クエリの結果は望んでいない可能性があります。
個別の値を選択する
ステートメントで重複データが返されることがわかっていて、個別の値のみを表示したい場合は、SELECT 句でDISTINCT キーワード (keyword)を使用します。 たとえば、一部の顧客の関心が同じ電話番号を使用している場合、 DISTINCT は各電話番号を 1 回だけ表示するようにします。
SELECT DISTINCT [txtCustomerPhone]
フィールドまたは式に代替名を使用する: AS キーワード
データシート ビューの任意のフィールドに表示されるラベルは、SELECT句のAS キーワード (keyword)とフィールド エイリアスを使用して変更できます。 フィールドの別名は、クエリ結果をわかりやすくするために、クエリでフィールドに割り当てる名前です。 たとえば、 txtCustPhone という名前のフィールドからデータを選択する場合は、フィールド エイリアスを使用して結果を読みやすくすることができます。
SELECT [txtCustPhone] AS [Customer Phone]
注
SELECT句で式を使用する場合は、フィールド エイリアスを使用する必要があります。
式を使用して選択する
データに基づいて計算を確認したり、フィールドの値の一部のみを返したりしたい場合があります。 たとえば、[ BirthDate ] フィールドのデータに基づいて顧客が生まれた年を返すとします。
SELECT句は次のようになります。
SELECT DatePart("yyyy",[BirthDate]) AS [Birth Year]
この式では、 DatePart 関数と 2 つの引数、 "yyyy" (定数) と [BirthDate] (識別子) を使用します。
1 つの入力値に対して 1 つの値を返す場合は、任意の有効な式をフィールドとして使用できます。