Anda di halaman 1dari 5

JOIN

Dalam menampilkan sebuah data seringkali kita perlu menggunakan lebih dari 1 tabel, 2
tabel, bahkan lebih, karena data yang akan ditampilkan terletak pada beberapa tabel. Setiap tabel
biasanya memiliki keterkaitan melalui primary key dan foreign key nya. Keyword JOIN
digunakan di SQL statement untuk men-query data dari 2 atau lebih tabel, berdasarkan
relationship antar kolom di tabel-tabel.
Untuk mencoba contoh-contoh perintah join, silahkan eksekusi query create+insert
dibawah ini:
CREATE TABLE Karyawan
(
nama varchar (100),
email varchar (100),
kode_jabatan char (5),
kode_dept char (5)
)
CREATE TABLE Jabatan
(
kode_jabatan char (5),
jabatan varchar (100),
salary int
)
CREATE TABLE Departemen
(
kode_dept char (5),
dept varchar (100),
alamat varchar (100)
)
INSERT INTO Karyawan VALUES ('Fajar','fajarcihuy@yahoo.com', 'JB001',
'DP001')
INSERT INTO Karyawan VALUES ('Jonsis','jonsisasoy@yahoo.com', 'JB002',
'DP002')
INSERT INTO Karyawan VALUES ('Nita','nitaoenyoe@yahoo.com', null,
'DP003')
INSERT INTO Jabatan VALUES ('JB001','Direktur', 15000000)
INSERT INTO Jabatan VALUES ('JB002','Direktur Utama', 20000000)
INSERT INTO Jabatan VALUES (null,'Sekretaris', 10000000)
INSERT INTO Departemen VALUES ('DB001','Akunting', 'Jalan Luwuk')
INSERT INTO Departemen VALUES ('DB002','IT', 'Jalan Bogor')
INSERT INTO Departemen VALUES ('DB003','Layanan', 'Jalan Bekazeh')

Tabel Karyawan

Tabel Jabatan

Tabel Departemen

Beberapa macam tipe JOIN:


1.

CROSS JOIN
Cross join seringkali disebut juga sebagai Cartesian Product. Bila menggunakan cross
join, maka akan menampilkan hasil yang didasarkan pada semua kemungkinan
kombinasi baris dalam kedua atau lebih set data. Banyaknya record cross join = jumlah
record tabel pertama x jumlah record tabel kedua
Contoh: Tampilkan semua data pada tabel karyawan dan departemen
Command:
SELECT * from Karyawan CROSS JOIN Departemen

Hasil:

Keterangan :
Cross join menggabungkan lebih dari satu tabel tanpa syarat apapun (tabel karyawan dan
departemen). Jika tabel karyawan memiliki 3 baris dan tabel departemen juga memiliki 3
baris, maka hasil cross join adalah 9 baris.

2.

JOIN (INNER JOIN)


Menampilkan baris jika setidak-tidaknya terdapat satu kesamaan foreign key dan primary
key yang dihubungkan dengan sintaks JOIN.
Contoh: Tampilkan data nama, email, jabatan, salary
Command:
SELECT a.nama, a.email, b.jabatan, b.salary
FROM Karyawan a JOIN Jabatan b on
a.kode_jabatan=b.kode_jabatan

Hasil:

Keterangan :
Menampilkan field nama, email, jabatan, dan salary berdasarkan kesamaan kode_jabatan
pada kedua tabel yang masing-masing memiliki data pada fieldnya. Jika ada data yang
tidak ada nilainya, maka tidak akan ditampilkan. Dalam kasus ini, data karyawan atas
nama Nita tidak ditampilkan karena kode_jabatannya null.
3.

LEFT JOIN (LEFT OUTER JOIN)


a. Left Outer Join tanpa klausa where
Menampilkan semua baris dari tabel yang ada di sebelah kiri perintah JOIN, bahkan jika
tidak terdapat kesamaan antara foreign key dan primary di kedua tabel.
Contoh: Tampilkan data nama, email, salary
Command:
SELECT a.nama, a.email, b.salary
FROM Karyawan a LEFT JOIN Jabatan b on
a.kode_jabatan=b.kode_jabatan

Hasil:

Keterangan:
Pada hasil di atas, terdapat nilai null karena sintaks left outer join menjadikan tabel yang
sebelah kiri atau yang pertama kali disebut (tabel: karyawan) sebagai referensi. Dan jika
tidak ada nilainya berdasarkan tabel jabatan, maka data tetap akan di tampilkan, namun
nilai nya adalah null. Dalam kasus ini, salary karyawan atas nama Nita tetap ditampilkan,
namun nilainya null.
b. Left Outer Join dengan klausa where
Command:
SELECT a.nama, a.email, b.salary
FROM Karyawan a LEFT JOIN Jabatan b on
a.kode_jabatan=b.kode_jabatan
WHERE b.salary IS NULL

Hasil:

Keterangan:
Sama seperti left outer join sebelumnya, namun dalam kasus ini ditambahkan klausa
where dimana data yang ditampilkan hanya karyawan yang salarynya bernilai null.
4.

RIGHT JOIN (RIGHT OUTER JOIN)


a. Right Outer Join tanpa klausa where
Menampilkan semua baris dari tabel yang ada di sebelah kanan perintah JOIN,
bahkan jika tidak terdapat kesamaan antara foreign key dan primary di kedua tabel.
Contoh: Tampilkan data nama, email, salary, jabatan
Command:
SELECT a.nama, a.email, b.jabatan, b.salary
FROM Karyawan a RIGHT JOIN Jabatan b on
a.kode_jabatan=b.kode_jabatan

Hasil:

Keterangan:
Pada hasil di atas, terdapat nilai null karena sintaks right outer join menjadikan tabel yang
sebelah kanan atau yang kedua kali disebut (tabel: jabatan) sebagai referensi. Dan jika
ada tabel sebelah kiri yang memiliki nilai, maka data tetap akan di tampilkan, namun
nilainya akan null. Dalam kasus ini, nama dan email karyawan atas nama Nita tetap
ditampilkan, namun nilainya null.
b. Right Outer Join dengan klausa where
Command:
SELECT a.nama, a.email, b.jabatan, b.salary
FROM Karyawan a RIGHT JOIN Jabatan b on
a.kode_jabatan=b.kode_jabatan
WHERE a.nama IS NULL OR a.email IS NULL

Hasil:

Keterangan:
Sama seperti right outer join sebelumnya, namun dalam kasus ini ditambahkan klausa
where dimana data yang ditampilkan hanya karyawan yang nama dan emailnya bernilai
null.

5.

FULL JOIN (FULL OUTER JOIN)


a. Full Outer Join tanpa klausa where
Menampilkan semua baris dari tabel yang ada disebelah kiri maupun kanan perintah
JOIN walaupun tidak terdapat kesamaan antara foreign key dan primary di kedua tabel.
Contoh: Tampilkan data nama, email, salary, jabatan
Command:
SELECT a.nama, a.email, b.jabatan, b.salary
FROM Karyawan a FULL JOIN Jabatan b on
a.kode_jabatan=b.kode_jabatan

Hasil:

Keterangan:
Full outer join menghasilkan semua data yang ditemukan dan cocok satu sama lain pada
kedua tabel, jika ada yang tidak cocok, bagian yang tidak ada tersebut akan berisi null.
Jadi bisa dikatakan, full outer join ini akan menampilkan semua data yang ada di kedua
tabel termasuk yang tidak cocok satu sama lain.
b. Full Outer Join dengan klausa where
Command:
SELECT a.nama, a.email, b.jabatan, b.salary
FROM Karyawan a FULL JOIN Jabatan b on
a.kode_jabatan=b.kode_jabatan
WHERE a.nama IS NULL or a.email IS NULL

Hasil:

Keterangan:
Sama seperti full outer join sebelumnya, namun dalam kasus ini ditambahkan klausa
where dimana data yang ditampilkan hanya karyawan yang nama dan emailnya bernilai
null.

Anda mungkin juga menyukai