ほとんどの SQL クエリは、1 つ以上のテーブルからデータを返す単一のステートメントを使用します。 SQL を使用すると、複数の個別のクエリを同時に実行し、結果を 1 つのデータ セットとして表示することもできます。このような結合されたクエリは、通常、結合または複合クエリと呼ばれます。
SQL クエリは、UNION 演算子を使用して結合されます。これを行うには、各リクエスト SELECT を指定し、それらの間にキーワード UNION を配置する必要があります。 1 つの一般クエリでの UNION 演算子の使用数に制限はありません。前のセクションでは、MS Access には完全な外部ユニオンを作成する機能がないことに注意しました。ここでは、UNION 演算子を使用してこれをどのように実現できるかを見ていきます。
Run SQLSELECT *
FROM Sumproduct
LEFT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
UNION
SELECT *
FROM Sumproduct
RIGHT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
すべてのレコードに別のテーブルに対応するレコードがあるかどうかに関係なく、クエリによって最初のテーブルと 2 番目のテーブルのすべての列が表示されたことがわかります。
多くの場合、UNION の代わりに、多くの条件で WHERE 句を使用すると、同様の結果が得られることにも注目してください。ただし、UNION を使用すると、レコードはより簡潔かつ明確に見えます。
結合クエリを作成するときは、特定のルールに従う必要もあります。
UNION を使用したクエリは、クエリ結果セットからすべての重複行を自動的に削除します (つまり、単一の SELECT ステートメントに複数の条件を指定した WHERE 句のように動作します)。これは UNION 演算子のデフォルトの動作ですが、必要に応じて変更できます。このためには、UNION の代わりに演算子 UNION ALL を使用する必要があります。
SELECT ステートメントの結果は、ORDER BY ステートメントを使用して並べ替えられます。 UNION を使用してクエリを結合する場合、使用できる ORDER BY 句は 1 つだけであり、最後の SELECT ステートメントに配置する必要があります。実際、結果の一部をある順序で並べ替え、他の部分を別の順序で並べ替えることは、実際にはあまり意味がありません。したがって、複数の文 ORDER BY は許可されません。