Materi 3 Praktikum SMBD
Table Join
1. Left Join dan Right Join
Table Join
1. Left Join dan Right Join
2.
Update
menggunakan Join Table
3.
Delete
menggunakan join table
1. Left Join dan Right Join
1. Left Join dan Right Join
Left join dan right join digunakan untuk menghindari data yang
hilang karena mungkin ada data yang belum direferensi oleh tabel
yang lain.
Sebagai contoh, kita
tambahkan data di jabatan tapi kita tidak referensikan di tabel
employee_join sebagai berikut:
mysql> insert into jabatan values (8,'Tenaga Magang');
Query OK, 1 row affected (0.05 sec)
Kemudian jika kita lakukan LEFT JOIN
dengan tabel jobs yang kita sebut terlebih dahulu (atau di sebelah kiri) maka
akan muncul sebagai berikut:
mysql> select * from jabatan t1 LEFT JOIN pegawai_join t2 ON t1.id_jabatan = t2. id_jabatan;
+------------+----------------+----------+-----------------------+-------------+------------+----------------+---------+
| id_jabatan | nama_jabatan | nip
| nama_peg |
alamat_peg | id_jabatan | jabatan | gaji |
+------------+----------------+----------+-----------------------+-------------+------------+----------------+---------+
| 1 | C.E.O | PEG-1001 | Soeharto Mangundirejo |
Yogyakarta | 1 | C.E.O | 9000000 |
| 2 | Manager | PEG-1002 | Felix Nababan | Medan | 2 | Manager | 8000000 |
| 3 | Kepala Unit | PEG-1003 | Olga Syahputra | Jakarta |
3 | Kepala Unit | 6000000 |
| 3 | Kepala Unit | PEG-1004 | Chelsea Olivia | Bandung |
3 | Kepala Unit | 6000000 |
| 4 | Supervisor | PEG-1005 | Tuti Wardani | Jawa Tengah | 4 | Supervisor | 4500000 |
| 4 | Supervisor | PEG-1006 | Budi Drajat | Malang |
4 | Supervisor | 4500000 |
| 5 | Staff Senior | PEG-1007 | Bambang Pamungkas | Kudus | 5 | Staff Senior | 3000000 |
| 5 | Staff Senior | PEG-1008 | Ely Oktafiani | Yogyakarta |
5 | Staff Senior | 3000000 |
| 5 | Staff Senior | PEG-1009 | Rani Wijaya | Magelang |
5 | Staff Senior | 3000000 |
| 6 | Staff Junior | PEG-1010 | Rano Karno | Solo | 6 | Staff Junior | 2000000 |
| 6 | Staff Junior | PEG-1011 | Rahmadi Sholeh | Yogyakarta |
6 | Staff Junior | 2000000 |
|
6 | Staff Junior | PEG-1012 | Ilham Ungara | Jakarta |
6 | Staff Junior | 2000000 |
| 6 | Staff Junior | PEG-1013 | Endang Melati | Madiun |
6 | Staff Junior | 2000000 |
| 7 | Tenaga Kontrak | PEG-1014 | Donny
Damara | Makasar |
7 | Tenaga Kontrak | 1000000 |
| 7 | Tenaga Kontrak | PEG-1015 |
Paijem | Yogyakarta |
7 | Tenaga Kontrak | 500000 |
| 8 | Tenaga Magang | NULL
| NULL |
NULL | NULL | NULL |
NULL |
+------------+----------------+----------+-----------------------+-------------+------------+----------------+---------+
16 rows in set (0.00 sec)
Meskipun pada tabel jabatan ada data yang belum direferensi, namun
data tersebut tetap ditampilkan dan diberi nilai NULL untuk nilai di tabel
pegawai_join yang belum diketahui. Hal yang sama juga berlaku untuk RIGHT JOIN,
kali ini dengan tabel jabatan berada di sebelah kanan.
mysql>
select * from pegawai_join t1 RIGHT JOIN jabatan
t2 ON t1.id_jabatan = t2.id_jabatan;
+----------+-----------------------+-------------+------------+----------------+---------+------------+----------------+
| nip | nama_peg | alamat_peg | id_jabatan | jabatan | gaji | id_jabatan | nama_jabatan |
+----------+-----------------------+-------------+------------+----------------+---------+------------+----------------+
| PEG-1001
| Soeharto Mangundirejo | Yogyakarta | 1 | C.E.O | 9000000 | 1 | C.E.O |
| PEG-1002
| Felix Nababan | Medan | 2 | Manager | 8000000 | 2 | Manager |
| PEG-1003
| Olga Syahputra | Jakarta |
3 | Kepala Unit | 6000000
| 3 | Kepala Unit |
| PEG-1004
| Chelsea Olivia | Bandung |
3 | Kepala Unit | 6000000 | 3 | Kepala Unit |
| PEG-1005
| Tuti Wardani | Jawa Tengah
| 4 | Supervisor | 4500000 | 4 | Supervisor |
| PEG-1006
| Budi Drajat | Malang |
4 | Supervisor | 4500000 | 4 | Supervisor |
| PEG-1007
| Bambang Pamungkas | Kudus | 5 | Staff Senior | 3000000 |
5 | Staff Senior |
| PEG-1008
| Ely Oktafiani | Yogyakarta |
5 | Staff Senior | 3000000 | 5 | Staff Senior |
| PEG-1009
| Rani Wijaya | Magelang |
5 | Staff Senior | 3000000 | 5 | Staff Senior |
| PEG-1010
| Rano Karno | Solo | 6 | Staff Junior | 2000000 | 6 | Staff Junior |
| PEG-1011
| Rahmadi Sholeh | Yogyakarta |
6 | Staff Junior | 2000000 | 6 | Staff Junior |
| PEG-1012
| Ilham Ungara | Jakarta |
6 | Staff Junior | 2000000 | 6 | Staff Junior |
| PEG-1013
| Endang Melati | Madiun |
6 | Staff Junior | 2000000 | 6 | Staff Junior |
| PEG-1014
| Donny Damara | Makasar |
7 | Tenaga Kontrak | 1000000 |
7 | Tenaga Kontrak |
| PEG-1015
| Paijem | Yogyakarta |
7 | Tenaga Kontrak | 500000 | 7 | Tenaga Kontrak |
| NULL | NULL | NULL |
NULL | NULL | NULL | 8 | Tenaga Magang |
+----------+-----------------------+-------------+------------+----------------+---------+------------+----------------+
16 rows in
set (0.02 sec)
2. Update
menggunakan Join Table
Kita juga dapat melakukan update
menggunakan Join table. Bentuk sintaksnya adalah
UPDATE <table1>, <table2> SET <column_name> =
'new_value' WHERE <conditions>
Misal,
kita ingin merubah nama belakang dari
employee yang pekerjaannya Spy menjadi
'Bono'. Kita dapat melakukannya
sebagai berikut:
mysql> UPDATE pegawai_join, jabatan SET
nama_peg = 'Soeharto Mangantelo' WHERE
pegawai_join.id_jabatan = jabatan.id_jabatan AND
jabatan.nama_jabatan = 'C.E.O';
Query OK, 1 row affected (0.85 sec)
Rows matched: 1 Changed: 1
Warnings: 0
mysql> SELECT nip, nama_peg, jabatan
FROM pegawai_join INNER JOIN jabatan USING (id_jabatan) LIMIT 3;
+----------+---------------------+-------------+
| nip |
nama_peg | jabatan |
+----------+---------------------+-------------+
| PEG-1001 | Soeharto Mangantelo | C.E.O |
| PEG-1002 | Felix Nababan | Manager |
| PEG-1003 | Olga Syahputra | Kepala Unit |
+----------+---------------------+-------------+
3 rows in set (0.00 sec)
6. Delete
menggunakan join table
Kita juga dapat menghapus data menggunakan join table sebagai
berikut:
mysql>
DELETE pegawai_join FROM pegawai_join, jabatan WHERE pegawai_join.id_jabatan =
jabatan.id_jabatan AND jabatan.nama_jabatan = 'Manager';
Query OK, 1 row affected (0.05 sec)
mysql> SELECT nip, nama_peg, jabatan
FROM pegawai_join INNER JOIN jabatan USING (id_jabatan) LIMIT 3;
+----------+---------------------+-------------+
| nip |
nama_peg | jabatan |
+----------+---------------------+-------------+
| PEG-1001 | Soeharto Mangantelo | C.E.O |
| PEG-1003 | Olga Syahputra | Kepala Unit |
| PEG-1004 | Chelsea Olivia | Kepala Unit |
+----------+---------------------+-------------+
3 rows in set (0.00 sec)

0 komentar:
Posting Komentar