Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データのクエリと変更 » ジョイン:複数テーブルからのデータ検索

 

ナチュラル・ジョイン

ナチュラル・ジョインを指定すると、同じ名前を持つカラムに基づいてジョイン条件が生成されます。生成されたジョイン条件がベース・テーブルのナチュラル・ジョインに有効になるためには、同じ名前のカラムがどちらのテーブルにも少なくとも 1 つは存在する必要があります。共通するカラム名がなければ、エラーが発生します。

テーブル A と B が共通のカラム名を 1 つ持っており、そのカラムが x であるとします。その場合は次のようになります。

SELECT *
FROM A NATURAL JOIN B;

これは、次のクエリと同義です。

SELECT *
FROM A JOIN B
 ON A.x = B.x;

テーブル A と B が共通のカラム名を 2 つ持っており、そのカラムが a と b である場合、A NATURAL JOIN B は次のクエリと同等です。

A JOIN B
 ON A.a = B.a
 AND A.b = B.b;
例 1

たとえば、テーブル Employees と Departments には共通のカラム名 DepartmentID が 1 つあるため、ナチュラル・ジョインを使用してこの 2 つのテーブルをジョインできます。

SELECT GivenName, Surname, DepartmentName
FROM Employees NATURAL JOIN Departments
ORDER BY DepartmentName, Surname, GivenName;
GivenName Surname DepartmentName
Janet Bigelow Finance
Kristen Coe Finance
James Coleman Finance
Jo Ann Davidson Finance
... ... ...

次の文は同義です。この文では、さきほどの例で生成されたジョイン条件が明示的に指定されています。

SELECT GivenName, Surname, DepartmentName
FROM Employees JOIN Departments
  ON (Employees.DepartmentID = Departments.DepartmentID)
ORDER BY DepartmentName, Surname, GivenName;
例 2

Interactive SQL で次のクエリを実行します。

SELECT Surname, DepartmentName
FROM Employees NATURAL JOIN Departments;
Surname DepartmentName
Whitney R & D
Cobb R & D
Breault R & D
Shishov R & D
Driscoll R & D
... ...

SQL Anywhere は 2 つのテーブルを参照し、共通するカラム名が DepartmentID だけであると判断します。次の ON CLAUSE は内部的に生成され、ジョインの実行に使用されます。

FROM Employees JOIN Departments
   ON Employees.DepartmentID = Departments.DepartmentID

NATURAL JOIN は ON 句を入力するための単なるショートカットで、この 2 つのクエリは同じです。


NATURAL JOIN を使用した場合のエラー
ON 句を使用したナチュラル・ジョイン
テーブル式のナチュラル・ジョイン
ビューと派生テーブルのナチュラル・ジョイン