Ta be l Join

Ta be l Join

Kadang kala anda m ungkin m em erlukan inform asi lebih dari sat u t abel. Sebagai cont oh anda ingin m enget ahui karyawan yang berj abat an sebagai Manaj er. Selain it u anda j uga ingin m elihat t unj angannya. Karena j abat an t erlet ak pada t abel dat a_pribadi dan t unj angan t erlet ak pada t abel t unj angan. Maka kit a harus m elakukan j oin pada kedua t abel unt uk m elakukan query yang diinginkan.

Karena kit a hanya m em ilik i sat u t abel kit a harus m em buat sat u lagi agar dapat m elakukan j oin. Unt uk it u bukalah PHP DESI GNER 2006 klik m enu File - N e w - SQL unt uk m em buat file SQL baru lalu ket ik kode berikut

-- aktifkan database karywan USE karyawan; -- buat tabel tunjangan CREATE TABLE tunjangan ( kode_kar varchar(4) not null, tunjangan mediumint(9), PRIMARY KEY(kode_kar) ) TYPE='MyISAM';

-- masukkan data pada tabel INSERT INTO tunjangan VALUES ('001A', 250000), ('002B', 175000),

('004D', 175000), ('005E', 100000);

Sim pan pada direkt ori hari- 11 dengan nam a t u n j a nga n .sql. Pada kode SQL diat as kit a t idak m enuliskan perint ah I NSERT 4x. Perint ah it u kit a gant i dengan t anda kom a yang m em isahkan set iap record. Selanj ut nya kit a akan m engeksekusi file t unj angan.sql m elalui m ysql prom pt . Ket ik perint ah berikut lalu t ekan ENTER

mysql> source i:/Apache2/htdocs/webmaster/Bab3/hari-11/tunjangan.sql;

Jika berhasil pesan yang m uncul adalah

Database changed Query OK, 0 rows affected, 1 warning (0.01 sec)

Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0

Jika m uncul pesan diat as m aka sem ua query yang kit a lakukan pada file t unj angan.sql t idak ada m asalah. Sekarang kit a akan m enam pilkan record dari t abel t unj angan.

mysql> SELECT * FROM tunjangan; [ENTER] +----------+-----------+ | kode_kar | tunjangan | +----------+-----------+ | 001A | 250000 | | 002B | 175000 | | 004D | 175000 | | 005E | 100000 |

+----------+-----------+

4 rows in set (0.00 sec)

Unt uk m elakukan j oin dari dua t abel. Kedua t abel t ersebut harus m em iliki kolom yang dapat berhubungan dalam hal ini kode_kar. Query berikut ini m enuj ukkan j oin dari t abel t unj angan ke t abel dat a_pribadi. Dim ana dalam m enam pilkan hasil dari t abel t unj angan, kit a m em ilih krit eria dari t abel dat a_pribadi bukan dari t abel t unj angan. Unt uk lebih m em perj elas ket ik query berikut pada m ysql prom pt

mysql> SELECT tunjangan.kode_kar, tunjangan.tunjangan [ENTER] -> FROM tunjangan LEFT JOIN data_pribadi [ENTER] -> USING (kode_kar) [ENTER] -> WHERE data_pribadi.nama_kar = "Web Janarko"; [ENTER]

Karena query diat as cukup panj ang m aka lebih nyam an unt uk kit a m enuliakannya dengan cara sepert i diat as. Out put yang dit am pilkan dari query diat as adalah

+----------+-----------+ | kode_kar | tunjangan | +----------+-----------+ | 001A | 250000 | +----------+-----------+

1 row in set (0.00 sec)

Tanda t it ik pada query diat as m enghubungkan ant ara nam a t abel dan kolom . Keyword yang digunakan unt uk m enghubungkan dua t abel adalah LEFT JOIN. Kem udian kit a m ent ukan kolom m ana yang punya relat ional( hubungan) dengan kolom lain pada t abel berbeda dengan m enggunakan USI NG. Dalam kasus ini yang m em iliki hubungan dengan kolom lain adalah kode_kar. Selanj ut nya kit a m enent ukan krit eria yang kit a inginkan dengan m enggunakan klausa WHERE.

Selain LEFT JOI N j uga t erdapat beberapa keyword lain. Unt uk daft ar lengkapnya lihat t abel 3.5

Ta be l 3 .5 Daft ar t ipe j oin pada MySQL

Ke yw or d Pe n j e la sa n

CARTESIAN PRODUCT Sem ua kom binasi pada sem ua baris dalam sem ua t abel. Digunakan kom a diant ara nam a t abel. Tidak dapat m enggunakan klausa WHERE

FULL JOIN

Sam a dengan diat as

CROSS JOIN Sam a dengan diat as. Dapat j uga dilet akkan diant ara nam a t abel yang dij oinkan.

INNER JOIN Ham pir sam a dengan pem isahan dua t abel dengan kom a. Jika t anpa WHERE m aka sam a dengan FULL JOI N.

EQUI JOIN Digunakan pada kondisi yang m enggunakan = unt uk m encocokkan t abel. Dapat digunakan dengan klausa WHERE.

LEFT JOIN Digunakan unt uk m encocokkan baris ant ar t abel dan baris yang t idak cocok diisi dengan NULL. Digunakan dengan WHERE.