Menggunakan Lebih dari satu Tabel MySQL


Lanjutan dari tulisan-tulisan sebelumnya yang ada disini.

Tabel binatang peliharaan melacak binatang peliharaan yang yang anda miliki. Jika anda ingin merekam informasi lain tentang mereka, seperti kejadian dalam hidup mereka seperti kunjungan ke dokter hewan atau ketika saudara seperindukan lahir, anda perlu tabel lain. Bagaiman isi dari tabel ini seharusnya? Tabel harus berisi informasi berikut:

  • Nama binatang peliharaan sehingga anda tahu mana setiap binatang berkaitan pada suatu peristiwa.
  • Sebuah tanggal sehingga anda tahu kapan peristiwa itu terjadi.
  • Sebuah field untuk menggambarkan peristiwa tersebut.
  • Sebuah kolom jenis peristiwa, jika anda ingin bisa mengkategorikan peristiwa.

Mengingat pertimbangan, pernyataan CREATE TABLE untuk tabel peristiwa mungkin terlihat seperti ini:

mysql> create table peristiwa (nama varchar(20), tanggal date, tipe varchar(15), keterangan varchar(255));

Seperti tabel binatang peliharaan, cara termudah adalah memuat catatan awal dengan membuat sebuah file tab-delimited teks yang berisi informasi berikut.

nama tanggal tipe keterangan
Fluffy 1995-05-15 punya saudara 4 anak kucing, 3 perempuan, 1 laki-laki
Buffy 1993-06-23 punya saudara 5 anak anjing, 2 perempuan, 3 laki-laki
Buffy 1994-06-19 punya saudara 3 anak anjing, 3 perempuan
Chirpy 1999-03-21 dokter hewan paruhnya perlu diluruskan
Claws 1998-02-17 ulang tahun memberinya kerah kutu baru
Whistler 1998-12-09 ulang tahun ulang tahun pertama

Buatlah file peristiwa.txt dan isi sesuai dengan tabel di atas atau anda bisa download peristiwa.txt disini.

Load peristiwa.txt seperti ini:

mysql> LOAD DATA LOCAL INFILE ‘/folder/ke/tempat/mentimpan/file/peristiwa.txt’ INTO TABLE peristiwa;

Jika pada mesin windows tambahkan (LINES TERMINATED BY ‘\r\n’) pada perintah di atas. Untuk lebih jelas lihat disini.

Ganti /folder/ke/tempat/mentimpan/file/peristiwa.txt ke alamat direktori anda menyimpan file peristiwa.txt.

Misalkan kita ingin menampilkan nama, usia, dan keterangan dari tabel Binatang_Peliharaan dan peristiwa, dimana usia menampilkan usia binatang peliharaan saat peristiwa itu terjadi. Kita juga akan menampilkan keterangan dimana keterangan yang ditampilkan hanya keterangan yang memilik tipe punya saudara saja:

mysql> SELECT Binatang_Peliharaan.nama, (Year(tanggal)-YEAR(tanggal_Lahir))
-> – (RIGHT(tanggal, 5)<RIGHT(tanggal_lahir,5)) AS usia, keterangan
-> FROM Binatang_Peliharaan INNER JOIN peristiwa
-> ON Binatang_Peliharaan.nama = peristiwa.nama
-> WHERE peristiwa.tipe = ‘punya saudara’;

Ada beberapa hal yang perlu diperhatikan tentang query ini:

  • Klausa FROM menggabungkan dua tabel karena query perlu untuk menarik informasi dari keduanya.
  • Ketika menggabungkan informasi dari beberapa tabel, anda perlu menentukan bagaimana record dalam satu tabel dapat disesuaikan dengan record yang lain. Hal ini mudah karena mereka keduanya memiliki kolom nama. Query menggunakan klausa ON untuk menyesuaikan record dalam dua tabel berdasarkan nilai nama.
  • Query menggunakan INNER JOIN untuk menggabungkan tabel. Sebuah INNER JOIN
    memungkinkan baris dari tabel baik untuk muncul dalam hasil jika dan hanya jika kedua tabel memenuhi kondisi yang ditentukan dalam klausa ON. Dalam contoh ini, klausa ON menetapkan bahwa kolom nama dalam tabel binatang peliharaan harus sesuai dengan nama kolom dalam tabel peristiwa. Jika nama muncul dalam satu tabel tetapi tidak muncul pada tabel yang lain, baris tidak akan ditampilkan dalam hasil pencarian karena kondisi dalam klausa ON gagal.
  • Karena nama kolom muncul di kedua tabel, anda haruslah spesifik tentang table apa yang anda maksud ketika mengacu pada kolom. Hal ini dilakukan dengan mengawali nama tabel dengan nama kolom.

Anda tidak perlu memiliki dua tabel yang berbeda untuk melakukan join. Kadang-kadang berguna untuk melakukan join dengan tabel untuk dirinya sendiri, jika anda ingin membandingkan record dalam tabel untuk record lain dalam tabel yang sama. Misalnya, untuk mencari pasangan untuk berkembang biak di antara hewan peliharaan anda, anda dapat melakukan join tabel binatang peliharaan dengan dirinya sendiri untuk menghasilkan pasangan calon laki-laki dan perempuan dari spesies yang sama seperti:

mysql> SELECT p1.nama, p1.jenis_kelamin, p2.nama, p2.jenis_kelamin, p1.spesies
-> FROM Binatang_Peliharaan AS p1 INNER JOIN Binatang_Peliharaan AS p2
-> ON p1.spesies = p2.spesies AND p1.jenis_kelamin = ‘p’ AND p2.jenis_kelamin = ‘l’;

Dalam query ini, kita tentukan alias untuk nama tabel untuk merujuk pada kolom yaitu p1 dan p2.

Iklan
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: