When both of the two table expressions being joined do not contain commas, SQL Anywhere examines the foreign key relationships in the pairs of tables in the statement, and generates a single join condition.
For example, the following join has two table-pairs, A-C and B-C.
(A NATURAL JOIN B) KEY JOIN C
SQL Anywhere generates a single join condition for joining C with
(A NATURAL JOIN B) by looking at the foreign key relationships within the table-pairs A-C and B-C. It generates one join condition for the two
pairs according to the rules for determining key joins when there are multiple foreign key relationships:
For more information, see Key joins when there are multiple foreign key relationships.
The following query finds all the employees who are sales representatives, and their departments.
SELECT Employees.Surname, FK_DepartmentID_DepartmentID.DepartmentName FROM ( Employees KEY JOIN Departments AS FK_DepartmentID_DepartmentID ) KEY JOIN SalesOrders;
You can interpret this query as follows.
( Employees KEY JOIN Departments as FK_DepartmentID_DepartmentID )and generates the join condition
Employees.DepartmentID = FK_DepartmentID_DepartmentID.DepartmentIDbased on the foreign key FK_DepartmentID_DepartmentID.
SalesOrders.EmployeeID = Employees.SalesRepresentative.
The following query is therefore equivalent to the previous query:
SELECT Employees.Surname, Departments.DepartmentName FROM ( Employees JOIN Departments ON ( Employees.DepartmentID = Departments.DepartmentID ) ) JOIN SalesOrders ON ( Employees.EmployeeID = SalesOrders.SalesRepresentative );
|Send feedback about this page via email or DocCommentXchange||Copyright © 2008, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.0|