SQL ステートメントを編集してクエリ結果を絞り込む

SQL ステートメントを編集してクエリ結果を絞り込む

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

クエリが思うように動作しない場合は、基本的な SQL ステートメントを少し加えて結果を絞り込むことができます。目的の結果を得るためにユーザーが編集できる SQL ステートメント、句、要素について学習しましょう。

注:  この記事は Access Web アプリ (Access で設計してオンラインで公開するデータベースの一種) には適用されません。

この記事の内容

Select ステートメントを作成します。

SELECT 句をカスタマイズします。

FROM 句をカスタマイズします。

WHERE 句をカスタマイズします。

UNION 演算子を使ってカスタマイズします。

SELECT ステートメントを作成する

SQL の SELECT ステートメントは 2 ~ 3 つの句から成り立ちます。SELECT 句は、データの検索場所をデータベースに指示し、特定の結果を返すように要求します。

注: SELECT ステートメントの末尾、つまり最後の句の末尾、または 1 行だけの場合はその SQL ステートメントの末尾は、常にセミコロン (;) で終わります。

次の SELECT ステートメントは、[市区町村] 列が "調布市" のレコードについて、[電子メール アドレス] 列と [会社] 列、[連絡先] テーブルの情報を取得するように Access に要求します。

SELECT ステートメントが表示されている SQL オブジェクト タブ

上のクエリでは、SELECT、FROM、WHERE の 3 つの句が使われています。

1. SELECT 句では、目的のデータが含まれている列を列挙します。演算子 (SELECT) に続けて 2 つの識別子 (電子メール アドレスと会社) が指定されています。識別子にスペースや特殊文字 ("電子メール アドレス" など) が使われている場合は、識別子を角かっこで囲みます。

2. FROM 句では、ソース テーブルを特定します。この例では、演算子 (FROM) に続けて識別子 (連絡先) が指定されています。

3. WHERE 句は省略可能です。この例では、演算子 (WHERE) に続けて式 (City="調布市") が指定されています。

詳細については、選択クエリでは、「簡単な選択クエリを作成します

一般的な SQL 句の一覧を次に示します。

SQL 句

機能

必要な ?

SELECT

目的のデータが含まれているフィールドを列挙します。

はい

FROM

SELECT 句で列挙したフィールドが含まれているテーブルを列挙します。

はい

WHERE

各レコードが結果に含めるために満たす必要があるフィールド条件を指定します。

いいえ

ORDER BY

結果の並べ替え方法を指定します。

いいえ

GROUP BY

集計関数が含まれている SQL ステートメントで、SELECT 句でグループ化されないフィールドを列挙します。

該当するフィールドがある場合のみ

HAVING

集計関数が含まれている SQL ステートメントで、SELECT ステートメントでグループ化されるフィールドに適用する条件を指定します。

いいえ

各 SQL 句は複数の SQL 条件から構成されます。一般的な SQL 条件の一覧を次に示します。

SQL 条件

定義

識別子

データベース オブジェクトを識別するために使う名前 (列名など)。

[電子メール アドレス] と会社

演算子

アクションを表す、またはアクションを変更するキーワード。

AS

定数

数値や NULL など、変更されない値。

42

識別子、演算子、定数、および関数の組み合わせで、1 つの値に評価されるもの。

>= 商品.[単価]

ページの先頭へ

SELECT 句をカスタマイズする

[ユーザー設定]

使用例

重複していない値だけを表示するには:

SELECT 句で DISTINCT キーワードを使います。

たとえば、複数の支店に分散している顧客がいますが、一部の電話番号は重複しているとします。電話番号を一度だけ列挙するには、SELECT 句を次のように使います。

SELECT DISTINCT [txtCustomerPhone] 

データシート ビューに識別子を表示する方法を変更してデータを読みやすくするには:

AS 演算子 (アクションを表す、またはアクションを変更するキーワード) とフィールドの別名を SELECT 句で使用します。フィールドの別名とは、結果をわかりやすくするためにユーザーがフィールドに割り当てる名前です。

SELECT [txtCustPhone] AS [Customer Phone]

FROM 句をカスタマイズする

[ユーザー設定]

使用例

テーブルの別名 (テーブルに割り当てる別の名前) を SELECT ステートメントで使用できます。テーブル名が長い場合、とりわけ異なるテーブル間で同じ名前を持つフィールドが複数ある場合は、テーブルの別名が役に立ちます。

ともに ID という名前の 2 つのフィールド (1 つは tblCustomer テーブルのフィールドで、もう 1 つは tblOrder テーブルのフィールド) からデータを選択するには、次のようにします。

SELECT [tblCustomer].[ID], 
[tblOrder].[ID]

テーブルの別名を定義するには、FROM 句で AS 演算子を次のように使用します。

FROM [tblCustomer] AS [C], 
[tblOrder] AS [O]

続いて、これらのテーブルの別名を SELECT 句で次のように使用できます。

SELECT [C].[ID], 
[O].[ID]

結合を使って 2 つのデータ ソースのレコード ペアを 1 つの結果に結合します。また、関連テーブルに対応するレコードがない場合に、どちらかのテーブルのレコードを含めるかどうかを指定します。

テーブルを結合し、クエリで両方のテーブルの項目を結合します。一方のテーブルに対応するレコードがない場合は、項目を除外します。

FROM 句は次のようになります。

FROM [tblCustomer] 
INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

結合の使用について

結合には内部結合と外部結合の 2 種類があります。クエリでよく使うのは内部結合です。 内部結合を使用したクエリを実行すると、結合される両方のテーブルで同じ値を持つ項目だけが結果に表示されます。

外部結合は、一致する値がない場合にデータを含めるかどうかを指定します。外部結合には一定の方向性があります。つまり、結合で指定されている最初のテーブルのレコードをすべて含めるかどうか (左結合)、または結合の 2 番目のテーブルのレコードをすべて含めるかどうか (右結合) を指定します。外部結合の SQL 構文は次のとおりです。

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2

テーブルおよびクエリを結合するクエリで結合の使用に関する詳細情報を参照してください。

ページの先頭へ

WHERE 句をカスタマイズする

WHERE 句には、クエリで返されるアイテムの数を制限できるようにするための条件が含まれています。クエリの抽出条件の例と、その動作を参照してください。

たとえば、基本的な WHERE 句をカスタマイズしてクエリ結果を絞り込むことができます。得意先の電話番号を検索したい場合に、名字が "Bagel" であることしかわからないとします。この例では、名字は LastName フィールドに格納されているので、SQL 構文は次のようになります。

WHERE [LastName]='Bagel'

また、データはさまざまなデータ型が一致している列のデータ ソースを結合する WHERE 句を使用します。これで役に立つので、異なるデータ型のフィールド間の結合を作成することはできません。ようなキーワードを使用して、その他のフィールドの抽出条件として 1 つのフィールドを使用します。たとえば、資産テーブルと [社員] テーブルからデータを使用する場合は、資産のメディアの種類を入力する場合にのみ資産テーブルのフィールドは、WHERE 句の外観は次の従業員テーブルの数値 3 [数量] フィールド:

WHERE field1 LIKE field2

重要: 集約関数で使用されるフィールドの抽出条件を WHERE 句で指定することはできません。集約フィールドの抽出条件は HAVING 句を使って指定します。

ページの先頭へ

UNION 演算子を使ってカスタマイズする

類似した複数の選択クエリの結果をまとめて表示したい場合は、UNION 演算子を使います。たとえば、データベースに Products テーブルと Services テーブルがあり、どちらのテーブルにも exclusive offer or product or service、price、warranty or guarantee の 3 つのフィールドがあるとします。Products テーブルには保証情報が格納され、Services テーブルには保証契約情報が格納されますが、基本情報は同じです 次のようなユニオン クエリを使用すると、2 つのテーブルから 3 つのフィールドを結合できます。

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;

クエリを実行すると、対応するフィールドの各セットが 1 つの出力フィールドにまとめられます。重複する行をすべて結果に含めるには、ALL 演算子を使います。

注: SELECT ステートメントの出力フィールドは、同じ数、同じ順序、同じまたは互換性のあるデータ型である必要があります。ユニオン クエリでは、数値型とテキスト型は互換性があります。

ユニオン クエリの詳細については、「ユニオン クエリ複数のクエリ結果を統合して表示」を参照してください。

ページの先頭へ

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×