Documente Academic
Documente Profesional
Documente Cultură
EMPNO
EMPNO DEPTNO
DEPTNO LOC
LOC
----- ------- --------
----- ------- --------
7839
7839 10
10 NEW
NEW YORK
YORK
7698
7698 30 CHICAGO
30 CHICAGO
7782
7782 10
10 NEW
NEW YORK
YORK
7566
7566 20 DALLAS
20 DALLAS
7654
7654 30
30 CHICAGO
CHICAGO
7499
7499 30 CHICAGO
30 CHICAGO
...
...
14
14 rows
rows selected.
selected.
What Is a Join?
• Use a join to query data from more
than one table.
SELECT
SELECT table1.column,
table1.column, table2.column
table2.column
FROM
FROM table1,
table1, table2
table2
WHERE
WHERE table1.column1
table1.column1 == table2.column2;
table2.column2;
–– Write
Write the
the join
join condition
condition in
in the
the WHERE
WHERE
clause.
clause.
–– Prefix
Prefix the
the column
column name
name with
with the
the table
table
name
name when
when the
the same
same column
column name
name
appears
appears inin more
more than
than one
one table.
table.
Cartesian Product
–– A
A Cartesian
Cartesian product
product is
is formed
formed when:
when:
•• A
A join
join condition
condition is is omitted
omitted
•• A
A join
join condition
condition is is invalid
invalid
•• All
All rows
rows inin the
the first
first table
table are
are joined
joined to
to all
all
rows
rows inin the
the second
second tabletable
–– To
To avoid
avoid aa Cartesian
Cartesian product,
product, always
always
include
include aa valid
valid join
join condition
condition in
in aa
WHERE
WHERE clause.
clause.
Generating
EMP (14 rows)
a Cartesian
DEPT (4 rows)
EMPNO
EMPNO ENAME
ENAME ... DEPTNOProduct
... DEPTNO DEPTNO
DEPTNO DNAME
DNAME LOC
LOC
------ ----- ... ------
------ ----- ... ------ ------
------ ----------
---------- --------
--------
7839
7839 KING
KING ...
... 10
10 10
10 ACCOUNTING
ACCOUNTING NEW
NEW YORK
YORK
7698
7698 BLAKE
BLAKE ...
... 30
30 20
20 RESEARCH
RESEARCH DALLAS
DALLAS
...
... 30
30 SALES
SALES CHICAGO
CHICAGO
7934
7934 MILLER
MILLER ...
... 10
10 40
40 OPERATIONS
OPERATIONS BOSTON
BOSTON
ENAME
ENAME DNAME
DNAME
------
------ ----------
----------
KING
KING ACCOUNTING
ACCOUNTING
“Cartesian BLAKE
BLAKE ACCOUNTING
ACCOUNTING
product: ...
...
KING
KING RESEARCH
RESEARCH
14*4=56 rows” BLAKE RESEARCH
BLAKE RESEARCH
...
...
56
56 rows
rows selected.
selected.
Types of Joins
Equijoin
Equijoin Non-equijoin
Non-equijoin Outer
Outer join
join Self
Self join
join
What Is an Equijoin?
EMP DEPT
EMPNO ENAME DEPTNO DEPTNO DNAME LOC
------ ------- ------- ------- ---------- --------
7839 KING 10 10 ACCOUNTING NEW YORK
7698 BLAKE 30 30 SALES CHICAGO
7782 CLARK 10 10 ACCOUNTING NEW YORK
7566 JONES 20 20 RESEARCH DALLAS
7654 MARTIN 30 30 SALES CHICAGO
7499 ALLEN 30 30 SALES CHICAGO
7844 TURNER 30 30 SALES CHICAGO
7900 JAMES 30 30 SALES CHICAGO
7521 WARD 30 30 SALES CHICAGO
7902 FORD 20 20 RESEARCH DALLAS
7369 SMITH 20 20 RESEARCH DALLAS
... ...
14 rows selected. 14 rows selected.
No employee in the
OPERATIONS department
Outer Joins
–– You
You use
use an
an outer
outer join
join to
to also
also see
see rows
rows
that
that do
do not
not usually
usually meet
meet the
the join
join
condition.
condition.
–– Outer
Outer join
join operator
operator is
is the
the plus
plus sign
sign (+).
(+).
SELECT
SELECT table1.column,
table1.column, table2.column
table2.column
FROM
FROM table1,
table1, table2
table2
WHERE
WHERE table1.column(+)
table1.column(+) == table2.column;
table2.column;
SELECT
SELECT table1.column,
table1.column, table2.column
table2.column
FROM
FROM table1,
table1, table2
table2
WHERE
WHERE table1.column
table1.column == table2.column(+);
table2.column(+);
Using Outer Joins
SQL> SELECT e.ename, d.deptno, d.dname
2 FROM emp e, dept d
3 WHERE e.deptno(+) = d.deptno
4 ORDER BY e.deptno;
WORKER.ENAME||'WORKSFOR'||MANAG
WORKER.ENAME||'WORKSFOR'||MANAG
-------------------------------
-------------------------------
BLAKE
BLAKE works
works for
for KING
KING
CLARK
CLARK works
works for
for KING
KING
JONES
JONES works
works for
for KING
KING
MARTIN
MARTIN works
works for
for BLAKE
BLAKE
...
...
13
13 rows
rows selected.
selected.
Summary
SELECT
SELECT table1.column,
table1.column, table2.column
table2.column
FROM
FROM table1,
table1, table2
table2
WHERE
WHERE table1.column1
table1.column1 == table2.column2;
table2.column2;
Equijoin
Equijoin Non-equijoin
Non-equijoin Outer
Outer join
join Self
Self join
join
Practice Overview
–– Joining
Joining tables
tables using
using an
an equijoin
equijoin
–– Performing
Performing outer
outer and
and self
self joins
joins
–– Adding
Adding conditions
conditions