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.
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.
);
1.
CREATE
TABLE
`mhs` (
2.
`nim`
varchar
(5),
3.
`namamhs`
varchar
(20),
4.
`alamat` text,
5.
`tgllhr`
date
,
6.
PRIMARY
KEY
(`nim`)
7.
);
dan… berikut ini adalah sampel datanya1.
CREATE
TABLE
`mk` (
2.
`kodemk`
varchar
(4),
3.
`namamk`
varchar
(20),
4.
`sks`
int
(11),
5.
`smt`
varchar
(10),
6.
PRIMARY
KEY
(`kodemk`)
7.
);
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'
);
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'
);
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'
);
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:
1.
SELECT
mhs.nim, mhs.namamhs
2.
FROM
mhs, ambilmk
3.
WHERE
mhs.nim = ambilmk.nim
AND
ambilmk.kodemk =
'MK01'
;
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
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.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'
;
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.
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.
?>
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.
Posting Komentar