括弧はセマンティクスを変更しません。 ON
の位置 句は、結合の論理処理の順序を制御します。
最初のクエリ
SELECT Customer.Name,
Product.Desc,
Transaction.Date
FROM Product
INNER JOIN Transaction
ON Transaction.ProductID = Product.ID
INNER JOIN Customer
ON Transaction.CustomerID = Customer.ID
2番目のクエリ
(冗長な括弧は削除されました)
SELECT Customer.Name,
Product.Desc,
Transaction.Date
FROM Product
INNER JOIN Transaction
INNER JOIN Customer
ON Transaction.CustomerID = Customer.ID
ON Transaction.ProductID = Product.ID
したがって、論理的に 最初の例では、Transaction, Product
に参加します 最初に発生し、次に結果として生じる仮想テーブルがCustomer
に結合されます 、一方、2番目の例では、Transaction, Customer
に参加します 最初に発生し、次に結果として生じる仮想テーブルがProduct
に結合されます
これは論理的であり、内部結合は結合性と可換性の両方であるため、実行プランに違いはない可能性があります(OPTION (FORCE ORDER)
を追加しない限り、 クエリに対して)が、外部結合に対しては実行できます。
これは