Anda di halaman 1dari 7

SQL JOIN

JOIN kata kunci yang digunakan dalam pernyataan SQL untuk


melakukan query data dari dua atau lebih tabel, yang
didasarkan pada hubungan antara kolom-kolom tertentu
dalam tabel ini.

Tabel dalam database sering berhubungan satu sama lain


dengan kunci.

Sebuah primary key adalah kolom/field (atau kombinasi


dari kolom/field) dengan nilai unik untuk setiap baris.
Setiap nilai kunci primer harus unik di dalam tabel
(tidak boleh ada nilai field kuncinya sama). Tujuannya
adalah untuk mengikat data bersama-sama, di meja, tanpa
mengulang semua data dalam setiap tabel.

Lihat pada tabel “Person” berikut:

P_Id LastName FirstName Address City


1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Perhatikan bahwa field/kolom "P_Id" adalah kunci utama


dalam tabel "Person". Ini berarti bahwa tidak ada dua
baris record dapat memiliki P_Id yang sama. P_Id akan
membedakan dua orang bahkan jika mereka memiliki nama
yang sama.

Kemudian kita memiliki tabel “Orders” berikut:

O_Id OrderNo P_Id


1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

Perhatikan bahwa kolom/field "O_Id" adalah kunci utama


dalam tabel "Pegawai" dan kolom/field "P_Id" mengacu pada
orang-orang dalam tabel "Person" tanpa menggunakan nama
mereka.

Perhatikan bahwa hubungan antara dua tabel di atas adalah


kolom/field "P_Id".
Sebelum kita melanjutkan dengan contoh-contoh, kami akan
membuat daftar jenis JOIN yang bisa anda gunakan, dan
perbedaan-perbedaannya.
1. INNER JOIN
INNER JOIN: hanya akan menampilkan baris untuk data yang
memiliki nilai yang sama pada field kunci dengan tabel
yang berelasi.

Sintax dari SQL INNER JOIN

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

Catatan : INNER JOIN sama dengan JOIN.

Contoh SQL INNER JOIN

Tabel "Persons" :
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Tabel "Orders" :
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

Sekarang kita ingin membuat daftar semua orang dengan


perintah. Kita menggunakan SELECT berikut:

SELECT Persons.LastName, Persons.FirstName,


Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

Hasil-set akan terlihat seperti ini:


LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Dari hasil join dapat dilihat yang tampil hanya jika
nilai pada field kunci tabel “Person” terdpat pada tabel
“Order”.

2. LEFT JOIN
LEFT JOIN: menampilkan data dengan mengacu pada tabel
yang ada disebelah kiri.

Sintax SQL LEFT JOIN

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

Catatan: dalam beberapa database LEFT JOIN disebut juga


dengan LEFT OUTER JOIN.

Contoh SQL LEFT JOIN

Tabel "Persons" :
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Tabel "Orders" :
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

Sekarang kita ingin membuat daftar semua orang dan


pesanan mereka - jika ada, dari tabel di atas.

Kita menggunakan SELECT berikut:

SELECT Persons.LastName, Persons.FirstName,


Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
Hasil-set akan terlihat seperti ini:

LastName FirstName OrderNo


Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Svendson Tove

Dari hasil join dapat dilihat bahwa semua baris dari


tabel sebelah kiri (Person) ditampilkan meskipun terdapat
data yang tidak mempunyai pasangan di tabel sebelah kanan
(Order).

3. RIGHT JOIN

RIGHT JOIN: menampilkan data dengan mengacu pada tabel


yang ada disebelah kanan.

Sintax SQL RIGHT JOIN :

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

Catatan: dalam beberapa database RIGHT JOIN disebut juga


RIGHT OUTER JOIN.

Contoh SQL RIGHT JOIN

Tabel "Persons" :
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Tabel "Orders" :
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Sekarang kita ingin membuat daftar semua orang dan
pesanan mereka - jika ada, dari tabel di atas.
Kita menggunakan SELECT berikut:

SELECT Persons.LastName, Persons.FirstName,


Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

Hasil-set akan terlihat seperti ini:

LastName FirstName OrderNo


Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
34764

Dari hasil join dapat dilihat bahwa semua baris dari


tabel sebelah kanan (Order) ditampilkan meskipun terdapat
data yang tidak mempunyai pasangan di tabel sebelah kiri
(Person).

4. FULL JOIN
FULL JOIN: merupakan gabungan dari LEFT JOIN dan RIGHT
JOIN.

Sintax SQL FULL JOIN:

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

SQL FULL JOIN Example

Tabel "Persons" :
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
Tabel "Orders" :
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

Sekarang kita ingin membuat daftar semua orang dan


pesanan mereka - jika ada, dari tabel di atas.
Kita menggunakan SELECT berikut:

SELECT Persons.LastName, Persons.FirstName,


Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

Hasil-set akan terlihat seperti ini:

LastName FirstName OrderNo


Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Svendson Tove
34764

Hasil join menunjukkan kata kunci yang kembali semua


baris dari tabel sebelah kiri (Person), dan semua baris
dari tabel kanan (Order). Jika ada baris dalam "Person"
yang tidak memiliki hubungan di "Order", atau sebaliknya
baris tersebut akan terdaftar dalam hasil/tampilan.

Contoh kasus.

Bangunlah database “joindb” dengan tabel-tabel berikut


ini:
Tabel Mahasiswa
NoID Nama Tglhr Alamat Kodejur
1 Munson 1991-09-23 Asia 5 TI
2 Leyman 1990-04-17 Bandung 20 SI
3 Jackson 1991-09-28 Semarang 3 MI
4 Jonathan 1990-04-10 Bogor 15 TK
5 Evelin 1992-05-09 Asia 22 MI
Tabel Jurusan
Kodejur Namajur
MI Manajemen Informatika
SI Sistem Informasi
TI Teknik Informatika
TK Teknik Komputer
SK Sistem KOmouter
KA Komputer Akuntansi

Dengan query tampilkanlah:

1. Daftar mahasiswa dan nama jurusannya dengan menggunakan


semua join diatas dan perhatikan perbeaannya. Dengan
field yang akan ditampilkan sbb:
NoID Nama Namajur

2. Daftar jurusan dan mahasiswanya dengan menggunakan


semua join diatas dan perhatikan perbeaannya. Dengan
field yang akan ditampilkan sbb:

Kodejur Namajur NoId Nama