Re: ON句における抽出条件の説明について
quensan
投稿数: 119
>ON句では結合条件にANDで続けて、WHERE句に記述していた抽出条件を指定することもできる、と読めます。
その通りではないでしょうか。
古いですが、オラクルマスター教科書(黒本)11g SQL基礎には以下のように書いてありました。
<引用>
ON句には結合条件を指定し、WHERE句には検索条件を指定します。
検索条件には、WHERE句、またはON句のANDキーワードのどちらを使用してもかまいません。
<引用>
>「on 条件A where 条件B 」と「on 条件A and 条件B 」では結果が異なる場合があるのではないでしょうか。
試してみると結果は同じでした。
SQL> SELECT e.employee_id, e.employee_name
FROM departments d JOIN employees e
ON d.department_id = e.department_id
WHERE e.department_id = 5;
EMPLOYEE_ID EMPLOYEE_NAME
----------- --------------------
1005 加藤昭彦
1012 阿部伊吹
1017 渡辺和也
SQL> SELECT e.employee_id, e.employee_name
FROM departments d JOIN employees e
ON d.department_id = e.department_id
AND e.department_id = 5;
EMPLOYEE_ID EMPLOYEE_NAME
----------- --------------------
1005 加藤昭彦
1012 阿部伊吹
1017 渡辺和也
参考URLは外部結合の話で、そうなると書き方が違ってくるのかもしれません。
その通りではないでしょうか。
古いですが、オラクルマスター教科書(黒本)11g SQL基礎には以下のように書いてありました。
<引用>
ON句には結合条件を指定し、WHERE句には検索条件を指定します。
検索条件には、WHERE句、またはON句のANDキーワードのどちらを使用してもかまいません。
<引用>
>「on 条件A where 条件B 」と「on 条件A and 条件B 」では結果が異なる場合があるのではないでしょうか。
試してみると結果は同じでした。
SQL> SELECT e.employee_id, e.employee_name
FROM departments d JOIN employees e
ON d.department_id = e.department_id
WHERE e.department_id = 5;
EMPLOYEE_ID EMPLOYEE_NAME
----------- --------------------
1005 加藤昭彦
1012 阿部伊吹
1017 渡辺和也
SQL> SELECT e.employee_id, e.employee_name
FROM departments d JOIN employees e
ON d.department_id = e.department_id
AND e.department_id = 5;
EMPLOYEE_ID EMPLOYEE_NAME
----------- --------------------
1005 加藤昭彦
1012 阿部伊吹
1017 渡辺和也
参考URLは外部結合の話で、そうなると書き方が違ってくるのかもしれません。
投稿ツリー
-
ON句における抽出条件の説明について
(yokoty, 2017-6-7 16:23)
-
Re: ON句における抽出条件の説明について
(quensan, 2017-6-12 17:31)
- Re: ON句における抽出条件の説明について (yokoty, 2017-6-13 13:41)
-
Re: ON句における抽出条件の説明について
(quensan, 2017-6-12 17:31)