Cara Membuat Query SQL Untuk Relasi Tabel

9
 Cara Membuat Query SQL Untuk Relasi Tabel Posted By rosihanari On September 11, 2009 @ 10:50 pm In SQL | Comments Disabled  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 perk uliahan 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, k ita bisa melihat relasi antar ketiga tabel tersebut sebagaimana tergambar pada gambar berikut ini

Transcript of Cara Membuat Query SQL Untuk Relasi Tabel

Page 1: Cara Membuat Query SQL Untuk Relasi Tabel

5/13/2018 Cara Membuat Query SQL Untuk Relasi Tabel - slidepdf.com

http://slidepdf.com/reader/full/cara-membuat-query-sql-untuk-relasi-tabel-55a7525eb90e0

Cara Membuat Query SQL Untuk Relasi Tabel

Posted By rosihanari On September 11, 2009 @ 10:50 pm In SQL | Comments Disabled 

 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. Dalamhal 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

Page 2: Cara Membuat Query SQL Untuk Relasi Tabel

5/13/2018 Cara Membuat Query SQL Untuk Relasi Tabel - slidepdf.com

http://slidepdf.com/reader/full/cara-membuat-query-sql-untuk-relasi-tabel-55a7525eb90e0

 

 Nah« selanjutnya, misalkan kita ingin menampilkan data mahasiswa (nim, nama) dari

mahasiswa yang pernah mengambil matakuliah µMK01. Bagaimana cara membuat query SQLnya?

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 µmahasiswayang 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.namamhsFROM 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

Page 3: Cara Membuat Query SQL Untuk Relasi Tabel

5/13/2018 Cara Membuat Query SQL Untuk Relasi Tabel - slidepdf.com

http://slidepdf.com/reader/full/cara-membuat-query-sql-untuk-relasi-tabel-55a7525eb90e0

 

Selanjutnya misalkan kita ingin menampilkan data mahasiswa (nim, nama) beserta nilainya dari

mahasiswa yang pernah mengambil matakuliah bernama µKALKULUS I¶. Bagaimana querySQL 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 namamatakuliah µ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.nilaiFROM mhs, ambilmk, mkWHERE 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 tabelnyalebih 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 [1]

dijalankan discript 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.nilaiFROM mhs, ambilmk, mkWHERE mhs.nim = ambilmk.nim AND mk.kodemk = ambilmk.kodemk

AND mk.namamk = 'KALKULUS I'";

Page 4: Cara Membuat Query SQL Untuk Relasi Tabel

5/13/2018 Cara Membuat Query SQL Untuk Relasi Tabel - slidepdf.com

http://slidepdf.com/reader/full/cara-membuat-query-sql-untuk-relasi-tabel-55a7525eb90e0

$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 [1]

dilakukan di dalam querySQL nya dan tidak di PHP nya. Script PHP hanya menjalankan query, memfetching data hasil

query dan kemudian menampilkannya di browser.

Page 5: Cara Membuat Query SQL Untuk Relasi Tabel

5/13/2018 Cara Membuat Query SQL Untuk Relasi Tabel - slidepdf.com

http://slidepdf.com/reader/full/cara-membuat-query-sql-untuk-relasi-tabel-55a7525eb90e0

 

Rosihan Ari`s Blog 

Sebaik-baik manusia adalah yang bisa memberikan manfaat bagi orang lain« 

ABOUT ME | NO REKENING | NO RESI PENGIRIMAN BARANG 

NASIHAT UNTUK SEMUANYA !!! 

Masih mau merayakan Valentine Day ? 

Cara Membuat Query SQL Untuk Relasi Tabel 

September 11th, 2009 | by rosihanari | Cetak Artikel Ini 

 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 yangmelibatkan 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.); 

Page 6: Cara Membuat Query SQL Untuk Relasi Tabel

5/13/2018 Cara Membuat Query SQL Untuk Relasi Tabel - slidepdf.com

http://slidepdf.com/reader/full/cara-membuat-query-sql-untuk-relasi-tabel-55a7525eb90e0

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

Page 7: Cara Membuat Query SQL Untuk Relasi Tabel

5/13/2018 Cara Membuat Query SQL Untuk Relasi Tabel - slidepdf.com

http://slidepdf.com/reader/full/cara-membuat-query-sql-untuk-relasi-tabel-55a7525eb90e0

 Nah« selanjutnya, misalkan kita ingin menampilkan data mahasiswa (nim, nama) darimahasiswa 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 µmahasiswayang 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 didalam 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 querySQL 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 namamatakuliah µ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¶

Page 8: Cara Membuat Query SQL Untuk Relasi Tabel

5/13/2018 Cara Membuat Query SQL Untuk Relasi Tabel - slidepdf.com

http://slidepdf.com/reader/full/cara-membuat-query-sql-untuk-relasi-tabel-55a7525eb90e0

terhubung oleh field µkodemk¶ yang juga ada pada keduanya. Nah« selanjutnya kita bisamembuat 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 discript 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.?> 

Page 9: Cara Membuat Query SQL Untuk Relasi Tabel

5/13/2018 Cara Membuat Query SQL Untuk Relasi Tabel - slidepdf.com

http://slidepdf.com/reader/full/cara-membuat-query-sql-untuk-relasi-tabel-55a7525eb90e0

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 hasilquery dan kemudian menampilkannya di browser.

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