ORACLE-JOIN関数
4462 ワード
JOIN必要なコラム情報が1つのテーブルに提供されない場合は、関連するテーブルロジックを組み合わせて、必要なコラム情報を参照します.
[形式]
SELECTコラム名1、コラム名2...
FROM表名1,表名2...
WHERE JOIN条件その他の条件...
-異なるテーブルの値を同時に使用します.
-cross-productを最初に試します(可能な限りの数をリストします).
重複する値を見つけ、その値を基準としてJOIN
部門情報が変更された場合、12000行の情報はすべて変更する必要があります.そのため、より効率的に管理するために、表を割り当てる必要があります.
分離するには4つのrowしか必要ありませんが、分離しなければ12000個のrowにdname、loc情報が書かれています.
->異なる性質の情報は複数のテーブルに分布するため,分散した情報をjoinとして抽出する技術が必要である.
INNERJOINテーブル名ON接続条件
whereセクションに結合条件を追加すると、可読性が低下し、データが大きいほど複雑になります.
->ANSI JOINを使用して、WHERE節に条件を満たす節のみを含めます!
JOINメソッド
1.whereセクションの使用
2. ANSI JOIN (INNER JOIN)
3.ANSI JOINですが、JOIN標準のコラム名として同時にUSINGに分類します
同じテーブルが2つあるのを想像してJOIN!!!!
ENAME MGR EMPNO ENAME
FORD 7566 7566 JONES
TURNER 7698 7698 BLAKE
MARTIN 7698 7698 BLAKE
WARD 7698 7698 BLAKE
JAMES 7698 7698 BLAKE
ALLEN 7698 7698 BLAKE
MILLER 7782 7782 CLARK
CLARK 7839 7839 KING
BLAKE 7839 7839 KING
JONES 7839 7839 KING
SMITH 7902 7902 FORD
11行を選択しました.
(king mgrがnullであることを示さない)
ex)emp表に部門番号40がない場合、dept表に部門番号40がある場合
*方法は2つあります
1)WHEREセクションを欠落したテーブルに接続する+
2)RIGHT OUTER JOINコラム名称ON署名条件
empテーブルの値が空の場合、40回出力します(右側のテーブルが強調表示され、左側にrowを追加する必要があります)
----->左側(+)
1 SELECT empno, dept.deptno, dname
2 FROM emp, dept
3* WHERE emp.deptno(+)=dept.deptno
プラスはrowが欠けているところに貼ってあります!!!(他の空の行を作成する必要があります.)
右側の突出をansijoinで表します
RIGHT OUTER(右側突出)
2つのテーブルに重複するバーがある場合は、識別子を使用します.
SELF JOINは括弧にサインするコラムを書きます!!
エラーの例) WHEREセクションの使用-接続 との接続 INNER JOIN-INNER JOINを2回使用すると を得ることができる.
[形式]
SELECTコラム名1、コラム名2...
FROM表名1,表名2...
WHERE JOIN条件その他の条件...
-異なるテーブルの値を同時に使用します.
-cross-productを最初に試します(可能な限りの数をリストします).
重複する値を見つけ、その値を基準としてJOIN
1 select ename, emp.deptno, dept.deptno, dname
2 FROM emp, dept
3 WHERE emp.deptno=dept.deptno
4* ORDER BY ename ASC
複数のテーブルにデータを格納する理由
部門情報が変更された場合、12000行の情報はすべて変更する必要があります.そのため、より効率的に管理するために、表を割り当てる必要があります.
分離するには4つのrowしか必要ありませんが、分離しなければ12000個のrowにdname、loc情報が書かれています.
->異なる性質の情報は複数のテーブルに分布するため,分散した情報をjoinとして抽出する技術が必要である.
ANSI JOIN:可読性向上用
INNERJOINテーブル名ON接続条件
whereセクションに結合条件を追加すると、可読性が低下し、データが大きいほど複雑になります.
->ANSI JOINを使用して、WHERE節に条件を満たす節のみを含めます!
JOINメソッド
1.whereセクションの使用
2. ANSI JOIN (INNER JOIN)
3.ANSI JOINですが、JOIN標準のコラム名として同時にUSINGに分類します
SELF JOIN:参照するコラムが同じ表にある場合:
同じテーブルが2つあるのを想像してJOIN!!!!
1 select e1.ename, e1.mgr, e2.empno, e2.ename
2 from emp e1, emp e2
3 where e1.mgr=e2.empno
4* order by e1.mgr ASC
1 select e1.ename, e1.mgr, e2.empno, e2.ename
2 from emp e1
3* INNER JOIN emp e2 ON e1.mgr=e2.empno
------>ここでは使用できません(結合条件のコラム名が異なるため)ENAME MGR EMPNO ENAME
FORD 7566 7566 JONES
TURNER 7698 7698 BLAKE
MARTIN 7698 7698 BLAKE
WARD 7698 7698 BLAKE
JAMES 7698 7698 BLAKE
ALLEN 7698 7698 BLAKE
MILLER 7782 7782 CLARK
CLARK 7839 7839 KING
BLAKE 7839 7839 KING
JONES 7839 7839 KING
SMITH 7902 7902 FORD
11行を選択しました.
(king mgrがnullであることを示さない)
OUTER JOIN:一つのデータが他のデータが存在しない時に全てのデータを抽出する。
ex)emp表に部門番号40がない場合、dept表に部門番号40がある場合
*方法は2つあります
1)WHEREセクションを欠落したテーブルに接続する+
2)RIGHT OUTER JOINコラム名称ON署名条件
empテーブルの値が空の場合、40回出力します(右側のテーブルが強調表示され、左側にrowを追加する必要があります)
----->左側(+)
1 SELECT empno, dept.deptno, dname
2 FROM emp, dept
3* WHERE emp.deptno(+)=dept.deptno
プラスはrowが欠けているところに貼ってあります!!!(他の空の行を作成する必要があります.)
右側の突出をansijoinで表します
RIGHT OUTER(右側突出)
1 SELECT empno, dept.deptno, dname
2 FROM emp
3* RIGHT OUTER JOIN dept ON emp.deptno=dept.deptno
USINGフェスティバルを使うと 1 SELECT empno, deptno, dname
2 FROM emp
3* RIGHT OUTER JOIN dept USING(deptno)
*USING節:識別子を指定しない!!!2つのテーブルに重複するバーがある場合は、識別子を使用します.
SELF JOINは括弧にサインするコラムを書きます!!
エラーの例)
SQL> select e.deptno, d.dname, e.ename, e.sal
2 from emp e
3 inner join dept d using(deptno);
select e.deptno, d.dname, e.ename, e.sal
*
1행에 오류:
ORA-25154: USING 절의 열 부분은 식별자를 가질 수 없음
例)SQL> select deptno, dname, ename, sal
2 from emp
3 inner join dept using(deptno);
3つのテーブルを結合する方法SQL> select ename, dname, grade
2 from emp, dept, salgrade
3 where emp.deptno=dept.deptno
AND sal between losal and hisal;
SQL> select ename, dname, grade
2 from emp
3 inner join dept using(deptno)
4 inner join salgrade on sal between losal and hisal;
Reference
この問題について(ORACLE-JOIN関数), 我々は、より多くの情報をここで見つけました https://velog.io/@jeongmmmn/ORACLE-JOIN-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol