Displaying Data From Multiple Tables
Displaying Data From Multiple Tables
Displaying Data From Multiple Tables
…
Cartesian Products
A Cartesian product is formed when:
A join condition is omitted
A join condition is invalid
All rows in the first table are joined to all
rows in the second table (same domain)
To avoid a Cartesian product, always
include a valid join condition in a WHERE
clause.
(since it is costly)
Generating a Cartesian Product
EMPLOYEES (20 rows) DEPARTMENTS (8 rows)
Cartesian
product:
20x8=160 rows
…
Types of Joins
Write the join condition in the WHERE
clause.
Prefix the column name with the table
name when the same column name
appears in more than one table.
What is an Equijoin?
EMPLOYEES DEPARTMENTS
… …
…
Additional Search Conditions
Using the AND Operator
EMPLOYEES DEPARTMENTS
… …
Employees.department_id=departments.department_id AND
department_id<70
Qualifying Ambiguous
Column Names
Use table prefixes to qualify column
names that are in multiple tables.
Improve performance by using table
prefixes.
Distinguish columns that have identical
names but reside in different tables by
using column aliases.
Using Table Aliases
Simplify queries by using table aliases.
Improve performance by using table
prefixes.
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e , departments d
WHERE e.department_id = d.department_id;
Joining More than Two Tables
EMPLOYEES DEPARTMENTS LOCATIONS
To join n tables together, you need a
minimum of n-1 join conditions. For
example, to join three tables, a minimum
Non-Equijoins
EMPLOYEES JOB_GRADES
…
Outer Joins
DEPARTMENTS EMPLOYEES
…
There are no employees in
department 190.
Outer Joins Syntax
You use an outer join to also see rows
that do not meet the join condition.
The Outer join operator is the plus sign
SELECT
SELECT table1.column,
table1.column, table2.column
(+).
FROM table1, table2
table2.column
FROM table1, 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
…
Self Joins
Role
EMPLOYEES (WORKER) EMPLOYEES (MANAGER)
… …
…
Practice 4, Part One: Overview
The CROSS JOIN clause produces the
cross-product of two tables.
This is the same as a Cartesian product
between the two tables.
SELECT last_name, department_name
FROM employees
CROSS JOIN departments ;
…
Creating Natural Joins
The NATURAL JOIN clause is based on
all columns in the two tables that have the
same name.
It selects rows from the two tables that
have equal values in all matched
columns.
If the columns having the same names
have different data types, an error is
returned.
Retrieving Records with Natural Joins
…
Creating Joins with the ON Clause
The join condition for the natural join is
basically an equijoin of all columns with
the same name.
To specify arbitrary conditions or specify
columns to join, the ON clause is used.
The join condition is separated from other
search conditions.
The ON clause makes code easy to
understand.
Retrieving Records with the ON
Clause
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id);
…
Creating Three-Way Joins with the
ON Clause
SELECT employee_id, city, department_name
FROM employees e
JOIN departments d
ON d.department_id = e.department_id
JOIN locations l
ON d.location_id = l.location_id;
…
INNER Versus OUTER Joins
In SQL: 1999, the join of two tables
returning only matched rows is an inner
join.
A join between two tables that returns the
results of the inner join as well as
unmatched rows left (or right) tables is a
left (or right) outer join.
A join between two tables that returns the
results of an inner join as well as the
results of a left and right join is a full outer
join.
LEFT OUTER JOIN
…
RIGHT OUTER JOIN
…
FULL OUTER JOIN
…
Additional Conditions