Cara Membuat Query SQL Untuk Relasi Tabel
September 11th, 2009 | by rosihanari |
Cetak Artikel
Ngabuburit gini emang enak buat ngeblog, itung-itung sambil beramal dengan sharing ilmu
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.
CREATE TABLE `ambilmk` ( `nim` varchar(5), `kodemk` varchar(4), `nilai` float, `smt` varchar(10), `thajar` varchar(10), PRIMARY KEY (`nim`,`kodemk`) );
CREATE TABLE `mhs` ( `nim` varchar(5), `namamhs` varchar(20), `alamat` text, `tgllhr` date, PRIMARY KEY (`nim`) );
CREATE TABLE `mk` ( `kodemk` varchar(4), `namamk` varchar(20), `sks` int(11), `smt` varchar(10), PRIMARY KEY (`kodemk`) );
dan… berikut ini adalah sampel datanya
INSERT INTO `ambilmk` VALUES ('M001', 'MK01', '3', 'GANJIL', '2001-2002');
INSERT INTO `ambilmk` VALUES ('M001', 'MK02', '2', 'GANJIL', '2001-2002');
INSERT INTO `ambilmk` VALUES ('M002', 'MK01', '4', 'GANJIL', '2001-2002');
INSERT INTO `ambilmk` VALUES ('M003', 'MK03', '4', 'GENAP', '2001-2002');
INSERT INTO `mhs` VALUES ('M001', 'XXX', 'SOLO', '1990-10-01');
INSERT INTO `mhs` VALUES ('M002', 'YYY', 'SEMARANG', '1992-08-11');
INSERT INTO `mhs` VALUES ('M003', 'ZZZ', 'SOLO', '1991-04-15');
INSERT INTO `mk` VALUES ('MK01', 'KALKULUS I', '3', 'GANJIL');
INSERT INTO `mk` VALUES ('MK02', 'GEOMETRI', '2', 'GANJIL');
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:
SELECT mhs.nim, mhs.namamhs FROM mhs, ambilmk 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
SELECT mhs.nim, mhs.namamhs, ambilmk.nilai FROM mhs, ambilmk, mk 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.
<?php
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
$query = "SELECT mhs.nim, mhs.namamhs, ambilmk.nilai
FROM mhs, ambilmk, mk
WHERE mhs.nim = ambilmk.nim AND mk.kodemk = ambilmk.kodemk
AND mk.namamk = 'KALKULUS I'";
$hasil = mysql_query($query);
echo "<table border='1'>";
echo "<tr><td>NIM</td><td>Nama Mhs</td><td>Nilai</td></tr>";
while ($data = mysql_fetch_array($hasil))
{
echo "<tr><td>".$data['nim']."</td><td>".$data['namamhs']."</td><td>".$data['nilai']."</td></tr>";
}
echo "</table>";
?>
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 Terkait |
Kata kunci: membuat relasi tabel - query relasi tabel - query relasi tabel sql - relasi tabel di php - script php relasi tabel -




pak, saya mo nanya klo mo update ma hapus data pada tabel yg berelasi carana gmana ya ??? kan klo tutorial yg di atas hanya membahas tntang select saja… makasih….
@nendysub: kalo relasinya melibatkan 2 tabel, berarti nanti query update dan hapus juga ada 2 buah mas, karena kita hanya bisa melakukan query hapus dan delete pada 1 tabel saja. Tapi sebenarnya bisa juga bisa langsung terhapus secara paralel jika berelasi, tapi dengan syarat tabelnya bertipe InnoDB. Coba anda baca http://blog.rosihanari.net/foreign-key-relationship-dan-referential-integrity-di-mysql
mas ari, bagaimana query sql untuk menampilkan data pada tabel A yang tidak ada pada tabel B, akan tetapi kedua tabel itu berelasi? misalkan primary key tabel A = foreign key di tabel B??
Mohon penjelasannya…
terima kasih
@dwi: coba pake SELECT * FROM tabelA WHERE field1 NOT IN (SELECT field2 FROM tabelB)
field1 adalah field di tabel A yang berelasi dengan field2 di tabel B
mas, thankz atas infonya ya
saya harap mas berkunjung dan join ke blog saya di
http://rikymetalist.blogspot.com
thankzz,
salam Persahabatan
oh ya caranya membuat profil pakai SQL gimana ya.,.,.,.,..,
pak, kalo menyimpan data ke dalam tabel berelasi one to many seperti apa y pak??
mohon bantuannya..
mohon pencerahan mas,
bagaimana jika kita ingin menampilakn data ‘MK01′ dan ‘MK02′ secara bersamaan mas ???
terimakasih
pak mohon bantuannya donk..jadi begini ceritanya.. q punya tabel dengan field sbb :
https://imageshack.us/scaled/large/109/captureufu.png
nahh q mau menampilkan nama_calon_karyawan Hanya yang statusnya Finish.
contoh yang tampil hanya Alex Jhon dan Jamal. Brenda Gak tampil karena statusnya ada yang No-Status
Mohon Pencerahan thank’s…!
@eko: gunakan saja query SELECT nama_calon_karyawan FROM tabel WHERE status = ‘Finish’;