Anda di halaman 1dari 12

MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

MODUL 3
JOIN TABLE

Tujuan Kompetensi Dasar yang ingin dicapai :


3.3 Menganalisis teknik penggabungan data dari beberapa tabel
 memahami inner join dalam penggabungan data dari beberapa tabel
 mengaplikasikan inner join dalam penggabungan data dari beberapa tabel
 menganalisis inner join dalam penggabungan data dari beberapa tabel
 memahami cross join dalam penggabungan data dari beberapa tabel
 mengaplikasikan cross join dalam penggabungan data dari beberapa tabel
 menganalisis cross join dalam penggabungan data dari beberapa tabel
 memahami outer join dalam penggabungan data dari beberapa tabel
 mengaplikasikan outer join dalam penggabungan data dari beberapa tabel
 menganalisis outer join dalam penggabungan data dari beberapa tabel
 memahami straight join dalam penggabungan data dari beberapa tabel
 mengaplikasikan straight join dalam penggabungan data dari beberapa tabel
 menganalisis straight join dalam penggabungan data dari beberapa tabel
4.3. Menyajikan hasil analisis dan tampilan penggabungan data dari beberapa tabel
 menerapkan inner join dalam penggabungan data dari beberapa tabel
 menunjukkkan inner join dalam penggabungan data dari beberapa tabel
 menerapkan cross join dalam penggabungan data dari beberapa tabel
 menunjukkkan cross join dalam penggabungan data dari beberapa tabel
 menerapkan outer join dalam penggabungan data dari beberapa tabel
 menunjukkkan outer join dalam penggabungan data dari beberapa tabel
 menerapkan straight join dalam penggabungan data dari beberapa tabel
 menunjukkkan straight join dalam penggabungan data dari beberapa tabel

1.1 Relationship
Relationship adalah suatu hubungan antara beberapa entitas. Konsep ini sangat penting sekali di
dalam basis data, di mana memungkinkan entitas entitas untuk saling berhubungan satu sama lain.
Di dalam sebuah relationship, primary key memiliki peran penting untuk mengaitkan entitas. Selain
itu, primary key juga digunakan untuk mendefinisikan batasan keterhubungan.
Sebagai contoh perhatikan relasi antara table departemen dan table karyawan dimana
hubungan antara ke dua table tersebut diwakili oleh field ‘id_dep’.

Gambar Model Relasi Basis Data ‘db_mutiara’

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 1


MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

Gambar Strktur Table ‘departemen’

Gambar Strktur Table ‘karyawan’

Data yang digunakan pada table-table tersebut adalah sebagai berikut:

Tabel Karyawan Tabel Departemen

1.2 Join
Join merupakan salah satu konstruksi dasar dari SQL dan basis data. Join dapat didefinisikan
sebagai kombinasi record dari dua atau lebih tabel di dalam basis data relasional dan menghasilkan
sebuah tabel (temporary) baru—yang disebut sebagai joined table. Join dapat diklasifikasikan ke
dalam dua jenis, yaitu inner join dan outer join.

A. Inner Join
Inner join pada dasarnya adalah menemukan persimpangan (intersection) antara dua buah
tabel. Sintaks inner join diperlihatkan sebagai berikut:

SELECT A1, A2, ..., An


FROM r1
INNER JOIN r2
ON r1.join_key = r2.join_key

Inner join juga dapat direpresentasikan dalam bentuk implisit sebagai berikut :

SELECT A1, A2, ..., An


FROM r1, r2
SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 2
MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

WHERE r1.key = r2.key

Misalkan terdapat tabel A dan B, maka hasil inner join dapat diperlihatkan—sebagai bidang
terarsir—dalam diagram Venn seperti gambar berikut :

Gambar 1. Inner Join

Sebagaimana dijelaskan, inner join akan mengembalikan data di tabel Adan B yang sesuai.
Sebagai contoh, untuk mendapatkan data karyawan yang memiliki departemen, eksekusi
pernyataan atau perintah SQL berikut:

Selain itu, dapat pula menggunakan bentuk implisit dari inner join di atas, sebagai berikut :

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 3


MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

Dalam pengambilan data ini, kita juga bisa menspesifikasikan field terkait. Sebagai contoh, untuk
mengambil nama karyawan dan nama departemen yang ditempatinya saja, eksekusi perintah SQL
berikut :

Perhatikan bahwa untuk menampilkan field tertentu saja, maka nama field tersebut harus
disebutkan secara eksplisit beserta nama tabel tempat field itu berada.

Catatan :
Nama tabel dapat pula tidak disebutkan apabila nama field yang terkait bersifat unik (berbeda atau
tidak ada yang menyamainya). Akan tetapi jika ada 2 atau lebih field yang memiliki nama yang sama
dan berada di table yang berbeda, maka nama tabel wajib disebutkan secara eksplisit untuk
menghindari keambiguan.

Agar penulisan SQL lebih efisien, kita dapat memanfaatkan fitur “derived table” (atau alias).
Contohnya adalah sebagai berikut :

Pada pernyataan SQL diatas, table karyawan dinotasikan dengan huruf k dan table departemen
menggunakan huruf d. Perhatikan hasil eksekusi perintah SQL tersebut, apakah sama dengan hasil
eksekusi perintah SQL sebelumnya (yang tidak menggunakan fitur derived table) ?

Catatan :
Penggunaan derived table akan semakin efisien manakala kita berurusan dengan banyak field dan
banyak table. Selain itu, juga menjadikan pernyataan SQL mudah dipahami.

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 4


MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

B. Outer Join
Outer join dibagi ke dalam tiga jenis, yaitu left outer join, right outer join, dan full outer join.

1. Left Outer Join


Left outer join (atau left join) mengembalikan semua nilai dari tabel kiri ditambah dengan nilai
dari tabel kanan yang sesuai (atau NULL jika tidak ada nilai yang sesuai).
Sintaks left outer join diperlihatkan sebagai berikut:

SELECT A1, A2, ..., An


FROM r1
LEFT OUTER JOIN r2
ON r1.join_key = r2.join_key

Left outer join antara tabel A dan B dapat diilustrasikan dalam diagram Venn seperti gambar
berikut :

Gambar 2. Left Outer Join

Contoh penggunaan LEFT OUTER JOIN adalah sebagai berikut :

Apabila diperlukan, kita juga dapat menggunakan klausa where di dalam join. Sebagai contoh,
untuk mendapatkan data karyawan yang tidak memiliki departemen, eksekusi perintah SQL berikut :

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 5


MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

2. Right Outer Join


Right outer join (atau right join) pada dasarnya sama seperti left join, namun dalam bentuk
terbalik—kanan dan kiri.
Sintaks right outer join diperlihatkan sebagai berikut:

SELECT A1, A2, ..., An


FROM r1
RIGHT OUTER JOIN r2
ON r1.join_key = r2.join_key

Right outer join antara tabel A dan B dapat diilustrasikan dalam diagram Venn seperti gambar
berikut :

Gambar 3. Right Outer Join

Contoh penggunaan RIGHT OUTER JOIN adalah sebagai berikut :

3. Full Outer Join

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 6


MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

Full outer join (atau full join) pada hakekatnya merupakan kombinasi dari left dan right join.
Sintaks full outer join diperlihatkan sebagai berikut:

SELECT A1, A2, ..., An


FROM r1
FULL OUTER JOIN r2
ON r1.join_key = r2.join_key

Bentuk visual dari full outer join dapat diperlihatkan menggunakandiagram Venn seperti gambar
berikut :

Gambar 4. Full Outer Join

Selain empat jenis join yang utama di atas, masih ada beberapa variasi join lainnya, seperti
CROSS JOIN (cartesian product), NATURAL JOIN, dan sebagainya.
Perlu juga diperhatikan, join bisa diimplementasikan dalam bentuk bersarang (nested join). Jadi,
di dalam sebuah operasi join bisa terdapat operasi join lainnya.
Beberapa DBMS tidak mendukung fungsionalitas full outer join. Meski demikian, join ini dapat
disimulasikan dengan memanfaatkan UNION. Tekniknya ialah dengan menggabung left join dan right
join seperti perintah SQL berikut :

4. Cross Join
Cross join pada hakekatnya merupakan inner join di mana kondisi join selalu dievaluasi true.
Secara matematis, jika A dan B merupakan dua himpunan, maka cross join-nya sama dengan × .
Contoh penggunaan CROSS JOIN adalah sebagai berikut :
SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 7
MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

Atau dalam bentuk implisitnya :

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 8


MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

1.3 Soal-Soal dan Latihan

Bagian 1 : Kerjakan latihan query multi table (join) diatas !


1. Bandingkan hasil eksekusi perintah SQL yang menggunakan INNER JOIN dengan yang
menggunakan bentuk implisitnya!
2. Perhatikan baris kedua dan keempat pada hasil eksekusi kode sql Left Outer Join (left join_1.sql)
diatas, apa yang menyebabkan timbulnya NULL value?
3. Dari hasil eksekusi kode sql Left Outer Join (left join_2.sql) di atas, dapat kita ketahui bahwa
karyawan yang bernama Budi dan Dani tidak memiliki departemen (nama departemennya tidak
tercatat di dalam tabel departemen).
4. Perhatikan kembali baris kedua dan keempat pada hasil eksekusi kode sql Right Outer Join (right
joint.sql) di atas, apa yang menyebabkan timbulnya NULL value?

Bagian 2 : Relasi yang menggunakan klausa inner join


Berikut adalah relasi antara tabel barang dan tabel order :

Data untuk tabel Order :

Data untuk tabel Barang

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 9


MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

Kerjakan pernyataan berikut ini berdasarkan contoh tabel diatas !


1. Tampilkan berapa jumlah tiap barang yang dikeluarkan/diorder beserta total harga dari barang
tersebut
2. Tampilkan berapa jumlah uang yang telah dihasilkan oleh tiap sales
3. Tampilkan seluruh barang yang diorders pada tanggal 03/02/03
4. Tampilkan berapa jumlah uang yang dihasilkan pada setiap tanggal orders

Bagian 3 : Relasi yang menggunakan klausa Outer Join


Berikut ini studi kasus dengan tema “ Pustaka Pribadi Sederhana”, yang terdiri dari dua buah Tabel.
Masing-masing tabel tersebut adalah tabel “DaftarBuku” yang berisi data-data dari koleksi buku
anda, serta tabel “DaftarPenerbit” yang berisi data-data dari penerbit buku yang kita miliki.
Hubungan dari kedua tabel ini digambarkan dengan sistem seperti pada gambar dibawah ini :

Dari sistem pada gambar diatas lakukanlah hal-hal berikut :


1. Buatlah database dengan nama “DaftarPustaka”
2. Buatlah kedua tabel dari sistem “DaftarPustaka” diatas
3. Isilah kedua tabel diatas, sebagai berikut :

Tabel Daftar Buku

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 10


MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

Tabel Daftar Penerbit

Setelah anda menyelesaikan soal diatas, jawablah dan tuliskan perintah SQL-nya dari pernyataan-
pernyataan berikut :
a. Tampilkan field judul Buku serta Kode Pengarang dari beberapa field yang dimiliki oleh tabel
yang ditunjuk, yaitu tabel Daftar Buku
b. Tampilkan data-data pada field judul serta field harga, di mana nama field dari judul
memeliki nama field baru “JudulBuku” dan harga memiliki nama baru “HargaBuku”
c. Tampilikan semua record dari pengarang buku yang memiliki nama “Yung”
d. Tampilkan semua buku yang berharga di atas 40000
e. Tampilkan semua daftar buku yang ditulis oleh Yung dan diterbitkan oleh Elex
f. Tampilkan semua record dari tabel daftar buku, dengan batasan kode pengarang memiliki
nilai
g. Lakukan pengurutan terhadap kode pengarang dari tabel daftar buku. Jika terdapat
beberapa record dengan kode pengarang yang sama, lakukanlah pengurutan berdarkan
kode penerbit
h. Tampilkanlah jumlah buku yang dimiliki dan kelompokkanlah berdasrkan kode penerbit
i. Berapakah jumlah buku dalam kategori pemrogrman komputer yang diterbitkan oleh
penerbit tertentu

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 11


MODUL BASIS DATA TINGKAT XII YULI PAMUNGKAS, SP

Bagian 4 : Kasus Database Perpustakaan

Berikut ini diberikan ERD database Perpustakaan :

Berdasarkan ERD di Atas, Buatlah perintah SQL untuk perintah dibawah ini:
1. Menampilkan nama anggota dan jenis anggotanya.?
2. Menampilkan nama anggota, sedang meminjam judul buku apa, dari tanggal berapa?
3. Menampilkan buku yang belom dikembalikan?
4. Menampilkan statistik nama anggota dan berapa buku yang dipinjam?
5. Menampilkan statistik judul buku dan berapa kali dipinjam?
6. Menampilkan kategori buku dan jumlah denda?
7. Menampilkan jenis anggota dan jumlah denda?
8. Menampilkan jenis kelamin dan berapa banyaknya dalam anggota?
9. Menampikan nama anggota dan jenisnya yang mengmbalikan buku tepat waktu?
10. Menmapilkan Buku dan kategorinya yang bukunya dalam kondisi baik?
11. Menampilkan kondisi buku dan banyaknya?
12. Menampilkan nama anggota, judul buku yang dendanya yang paling banyak?
13. menampilkan 10 data yang paling telambat mengembalikan buku.
14. menampilkan jenis anggota dan jk beserta banyaknya?
15. menampilkan 10 data terbanyak meminjam (terbanyak palingatas)?

SMK NEGERI 1 CIMAHI – REKAYASA PERANGKAT LUNAK 12

Anda mungkin juga menyukai