Sabtu, Desember 14, 2013

Table Join Pada MySQL(2)

Diposting oleh ajeng diana di 18.46
Materi 3 Praktikum SMBD
Table Join
1.   Left Join dan Right Join
2.   Update menggunakan Join Table
3.   Delete menggunakan join table

 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

 

ajeng diana Copyright © 2015 Design by ajengdiana dianastore