Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Joining Tables PDF

Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

Displaying Data from Multiple Tables

Database Design
Muhammad Rudyanto Arief
rudy@amikom.ac.id
Objectives
§ After completing this lesson, you should be able to do the
following:
§ Write SELECT statements to access data from more than one table using
equijoins and non- equijoins
§ Join a table to itself by using a self-join
§ View data that generally does not meet a join condition by using outer
joins
§ Generate a Cartesian product of all rows from two or more tables
Obtaining Data from Multiple Tables
EMPLOYEES DEPARTMENTS


Types of Joins
Joins that are compliant with the SQL:1999 standard
include the following:
§ Cross joins
§ Inner join atau Natural joins
§ USING clause
§ Full (or two-sided) outer joins
§ Arbitrary join conditions for outer joins
Cross Join
§ Menggabungkan semua record dari tabel pertama dengan semua
record di tabel kedua.
§ Banyaknya record dari cross join = jumlah record tabel pertama X
jumlah record tabel kedua
§ Contoh:
§ SELECT *
FROM mahasiswa CROSS JOIN dosen;
§ SELECT *
FROM mahasiswa, dosen;
Inner Join
§ Menghubungkan 2 (atau lebih) tabel berdasarkan atribut
penghubung.
§ Metode 1:
§ SELECT *
FROM mahasiswa INNER JOIN dosen
USING (nik);
§ Metode 2:
§ SELECT *
FROM mahasiswa INNER JOIN dosen ON mahasiswa.nik = dosen.nik;
Inner Join (lanjutan 1)
§ Metode 3:
§ SELECT * FROM mahasiswa NATURAL INNER JOIN dosen;
§ Metode 4 (paling kompatibel):
§ SELECT * FROM mahasiswa, dosen
WHERE mahasiswa.nik = dosen.nik;
§ Perhatian: Untuk INNER JOIN, Anda dapat menghilangkan kata
‘INNER’. Jadi, cukup dengan kata ‘JOIN’ saja.
Inner Join (lanjutan 2)
§ Dengan metode 4, jika kolom yang ingin ditampilkan ada di lebih dari
2 tabel, maka Anda harus menentukan tabel mana yang diinginkan.
§ Contoh:
§ SELECT dosen.nik, nama_mhs, nik FROM mahasiswa, dosen
WHERE mahasiswa.nik = dosen.nik;
Joining Tables Using SQL:1999 Syntax
Use a join to query data from more than one table:

SELECT table1.column, table2.column


FROM table1
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name)] |
[JOIN table2
ON (table1.column_name = table2.column_name)]|
[LEFT|RIGHT|FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name)]|
[CROSS JOIN table2];
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.
Qualifying Ambiguous Column Names
§ Use table prefixes to qualify column names that are
in multiple tables.
§ Use table prefixes to improve performance.
§ Use column aliases to distinguish columns that have
identical names but reside in different tables.
§ Do not use aliases on columns that are identified in
the USING clause and listed elsewhere in the SQL
statement.
Using Table Aliases
§ Use table aliases to simplify queries.
§ Use table aliases to improve performance.

SELECT e.employee_id, e.last_name,


d.location_id, department_id
FROM employees e JOIN departments d
ON e.department_id = d.department_id;
Creating Joins with the ON Clause
§ The join condition for the natural join is basically an
equijoin of all columns with the same name.
§ Use the ON clause to specify arbitrary conditions or
specify columns to join.
§ 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);


Self-Joins Using the ON Clause
EMPLOYEES (WORKER) EMPLOYEES (MANAGER)

… …

MANAGER_ID in the WORKER table is equal to


EMPLOYEE_ID in the MANAGER table.
Self-Joins Using the ON Clause

SELECT e.last_name emp, m.last_name mgr


FROM employees e JOIN employees m
ON (e.manager_id = m.employee_id);


Applying Additional Conditions to a Join
Creating Three-Way Joins with the ON Clause


Non-Equijoins
EMPLOYEES JOB_GRADES

Salary in the EMPLOYEES


table must be between
… lowest salary and highest
salary in the JOB_GRADES
table.
Retrieving Records with Non-Equijoins
SELECT e.last_name, e.salary, j.grade_level
FROM employees e JOIN job_grades j
ON e.salary
BETWEEN j.lowest_sal AND j.highest_sal;


Outer Joins
DEPARTMENTS EMPLOYEES

There are no employees in


department 190.
INNER Versus OUTER Joins
§ In SQL:1999, the join of two tables returning only
matched rows is called an inner join.
§ A join between two tables that returns the results of
the inner join as well as the unmatched rows from
the left (or right) tables is called 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

SELECT e.last_name, e.department_id, d.department_name


FROM employees e LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;


RIGHT OUTER JOIN
SELECT e.last_name, e.department_id, d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;


FULL OUTER JOIN
SELECT e.last_name, d.department_id, d.department_name
FROM employees e FULL OUTER JOIN departments d
ON (e.department_id = d.department_id) ;


Cartesian Products
§ A Cartesian product is formed when:
o A join condition is omitted
o A join condition is invalid
o All rows in the first table are joined to all rows in the
second table
§ To avoid a Cartesian product, always include a valid join
condition.
Generating a Cartesian Product
EMPLOYEES (20 rows) DEPARTMENTS (8 rows)

Cartesian product:
20 x 8 = 160 rows


Creating Cross Joins
§ The CROSS JOIN clause produces the cross-
product of two tables.
§ This is also called a Cartesian product between the
two tables. SELECT last_name, department_name
FROM employees
CROSS JOIN departments ;


Summary
In this lesson, you should have learned how to use
joins to display data from multiple tables by using:
§ Equijoins
§ Non-equijoins
§ Outer joins
§ Self-joins
§ Cross joins
§ Natural joins
§ Full (or two-sided) outer joins

You might also like