Anda di halaman 1dari 4

OK..

kali ini saya akan mencoba membahas bagaimana cara membuat query SQL yang
melibatkan tabel lebih dari satu (multi tabel) dimana saling berelasi satu sama yang lain. Dalam
hal ini, pembahasan hanya akan berfokus pada query berbentuk SELECT saja.

Untuk lebih jelasnya, saya berikan sampel 3 buah tabel yang saling berelasi satu sama lain
beserta sampel datanya. Tabel ini merupakan studi kasus dari data perkuliahan mahasiswa.

view sourceprint?
1.CREATE TABLE `ambilmk` (
2.`nim` varchar(5),
3.`kodemk` varchar(4),
4.`nilai` float,
5.`smt` varchar(10),
6.`thajar` varchar(10),
7.PRIMARY KEY (`nim`,`kodemk`)
8.);
view sourceprint?
1.CREATE TABLE `mhs` (
2.`nim` varchar(5),
3.`namamhs` varchar(20),
4.`alamat` text,
5.`tgllhr` date,
6.PRIMARY KEY (`nim`)
7.);
view sourceprint?
1.CREATE TABLE `mk` (
2.`kodemk` varchar(4),
3.`namamk` varchar(20),
4.`sks` int(11),
5.`smt` varchar(10),
6.PRIMARY KEY (`kodemk`)
7.);

dan berikut ini adalah sampel datanya

view sourceprint?
1.INSERT INTO `ambilmk` VALUES ('M001', 'MK01', '3', 'GANJIL', '2001-2002');
2.INSERT INTO `ambilmk` VALUES ('M001', 'MK02', '2', 'GANJIL', '2001-2002');
3.INSERT INTO `ambilmk` VALUES ('M002', 'MK01', '4', 'GANJIL', '2001-2002');
4.INSERT INTO `ambilmk` VALUES ('M003', 'MK03', '4', 'GENAP', '2001-2002');
view sourceprint?
1.INSERT INTO `mhs` VALUES ('M001', 'XXX', 'SOLO', '1990-10-01');
2.INSERT INTO `mhs` VALUES ('M002', 'YYY', 'SEMARANG', '1992-08-11');
3.INSERT INTO `mhs` VALUES ('M003', 'ZZZ', 'SOLO', '1991-04-15');
view sourceprint?
1.INSERT INTO `mk` VALUES ('MK01', 'KALKULUS I', '3', 'GANJIL');
2.INSERT INTO `mk` VALUES ('MK02', 'GEOMETRI', '2', 'GANJIL');
3.INSERT INTO `mk` VALUES ('MK03', 'KALKULUS II', '3', 'GENAP');

Berdasarkan ketiga tabel tersebut, kita bisa melihat relasi antar ketiga tabel tersebut sebagaimana
tergambar pada gambar berikut ini
Nah selanjutnya, misalkan kita ingin menampilkan data mahasiswa (nim, nama) dari
mahasiswa yang pernah mengambil matakuliah MK01. Bagaimana cara membuat query SQL
nya?

Sebelum kita mulai membuat query SQL nya, terlebih dahulu harus kita tentukan Di tabel
manakah kita akan bekerja dari ketiga tabel tersebut. OK untuk menampilkan nim dan nama,
kita bisa menggunakan tabel mhs. Sedangkan untuk prasyarat dari query yaitu mahasiswa
yang pernah mengambil matakuliah MK01 kita menggunakan tabel ambilmk. Dengan
demikian query yang akan kita buat hanya melibatkan kedua tabel tersebut, yaitu mhs dan
ambilmk.

Eh masih ada lagi hal yang harus diperhatikan, yaitu relasi kedua tabel tersebut. Bila Anda
lihat gambar relasi di atas atau hubungan antar ketiga tabel, tabel ambilmk dan tabel mhs
direlasikan melalui field apa? Dari gambar, kita tahu bahwa kedua tabel terhubung melalui field
nim yang ada di tabel mhs dan field nim yang ada di tabel ambilmk. Oleh karena itu di
dalam query SQL terutama pada bagian klausa WHERE perlu adanya perintah untuk
menggambarkan hubungan tersebut.

Query SQL untuk menampilkan data mahasiswa (nim, nama) dari mahasiswa yang pernah
mengambil matakuliah MK01 adalah sbb:

view sourceprint?
1.SELECT mhs.nim, mhs.namamhs
2.FROM mhs, ambilmk
3.WHERE mhs.nim = ambilmk.nim AND ambilmk.kodemk = 'MK01';

Perhatikan perintah mhs.nim = ambilmk.nim pada query di atas. Perintah tersebut digunakan
untuk merelasikan tabel mhs dengan ambilmk dimana kedua tabel terhubung oleh field nim
yang ada di masing-masing tabel.

Sehingga hasil dari query SQL di atas adalah


Selanjutnya misalkan kita ingin menampilkan data mahasiswa (nim, nama) beserta nilainya dari
mahasiswa yang pernah mengambil matakuliah bernama KALKULUS I. Bagaimana query
SQL nya?

OK langkah pertama, kita tentukan dulu tabel mana saja yang kita pilih. Untuk menampilkan
nim dan nama, kita butuh tabel mhs. Nilai, kita butuh tabel ambilmk. Sedangkan nama
matakuliah KALKULUS I yang digunakan sebagai syarat, kita dapatkan dari tabel mk. Jadi
untuk query ini, kita butuh ketiga tabel semuanya.

Setelah itu, kembali lagi kita lihat gambar relasi ketiga tabel di atas. Tabel mhs dan ambilmk
dihubungkan dengan field nim yang ada pada keduanya. Sedangkan tabel mk dan ambilmk
terhubung oleh field kodemk yang juga ada pada keduanya. Nah selanjutnya kita bisa
membuat query SQL nya

view sourceprint?
1.SELECT mhs.nim, mhs.namamhs, ambilmk.nilai
2.FROM mhs, ambilmk, mk
3.WHERE mhs.nim = ambilmk.nim AND mk.kodemk = ambilmk.kodemk AND mk.namamk =
'KALKULUS I';

Perhatikan query SQL di atas, perintah mhs.nim = ambilmk.nim AND mk.kodemk =


ambilmk.kodemk menunjukkan relasi ketiga tabel. Gunakan operator AND bila relasi tabelnya
lebih dari 1 buah. Dan kedua perintah relasi bisa dibolak-balik (mk.kodemk =
ambilmk.kodemk AND mhs.nim = ambilmk.nim) karena sifat operasi AND adalah komutatif.

Hasil dari query tersebut adalah

Trus mungkin ada yang bertanya lagi bagaimana jika query relasi tabelnya dijalankan di
script PHP? Ya caranya sama saja, Anda tinggal jalankan query SQL untuk relasi tabel di
dalam script PHP nya. Dalam hal ini relasi tabel tetap ditentukan oleh query SQL nya.

Sebagai contoh, script PHP di bawah ini akan menampilkan hasil dari query terakhir di atas.

view sourceprint?
01.<?php
02.
03.mysql_connect("dbhost", "dbuser", "dbpass");
04.mysql_select_db("dbname");
05.
06.$query = "SELECT mhs.nim, mhs.namamhs, ambilmk.nilai
07.FROM mhs, ambilmk, mk
08.WHERE mhs.nim = ambilmk.nim AND mk.kodemk = ambilmk.kodemk
09.AND mk.namamk = 'KALKULUS I'";
10.$hasil = mysql_query($query);
11.
12.echo "<table border='1'>";
13.echo "<tr><td>NIM</td><td>Nama Mhs</td><td>Nilai</td></tr>";
14.while ($data = mysql_fetch_array($hasil))
15.{
16.echo "<tr><td>".$data['nim']."</td><td>".$data['namamhs']."</td><td>".
$data['nilai']."</td></tr>";
17.}
18.echo "</table>";
19.
20.?>

dan hasilnya

Dengan demikian, saya ulangi lagi bahwa dalam hal ini relasi tabel dilakukan di dalam query
SQL nya dan tidak di PHP nya. Script PHP hanya menjalankan query, memfetching data hasil
query dan kemudian menampilkannya di browser.

OK mudah-mudahan artikel ini bermanfaat bagi Anda yang sedang belajar merelasikan tabel
dengan query SQL sekaligus menjalankannya di PHP.

Baca Juga Artikel Terkai

Anda mungkin juga menyukai