参考書でJOIN句の説明を見ると[SQL]SELECT A.*, B.*
FROM A
INNER JOIN B
ON A.ID = B.ID[/SQL]
といった記述をよく見かけます。
そのためJOIN句の条件はID=IDのような結合条件だけしか書けないものと思っていましたが、どうやら違うようです。
[SQL]SELECT A.*, B.*
FROM A
INNER JOIN B
ON A.ID = B.ID
AND B.AGE = 30[/SQL]
このようにBテーブルに対する制限条件も一緒に書くことができます。
これは[SQL]SELECT A.*, B.*
FROM A
INNER JOIN B
ON A.ID = B.ID
WHERE B.AGE = 30[/SQL]
とは当然結果が異なります。
前者はB.AGE=30でフィルタリングした後にJOINしていますが、
後者はJOINした後にB.AGE=30のフィルタリングをしています。
ちなみに前者は[SQL]SELECT A.*, B.*
FROM A
INNER JOIN (SELECT * FROM B WHERE B.AGE = 30) B
ON A.ID = B.ID[/SQL]
と記述することもできるようです。
というか私はこちらの方法しか知りませんでした。
どちらが読みやすいでしょうか?