Perintah SQL (SELECT) untuk Multi Tabel (Bag. 1)
June 30th, 2008 | by rosihanari |
Cetak Artikel
Pada artikel ini akan diberikan beberapa contoh perintah SQL yang diimplementasikan pada multi tabel. Adapun perintah SQL untuk manipulasi data pada satu tabel, saya yakin hal ini cukup mudah bagi Anda. Dalam contoh ini akan diambil studi kasus tentang pengambilan matakuliah mahasiswa.
Tabel-tabel yang dibuat pada studi kasus ini cukup sederhana saja untuk memudahkan pemahaman. Adapun tabel-tabel tersebut adalah:
mhs ( nim varchar(3), namaMhs varchar(30), primary key(nim) )
mk ( kodeMK varchar(3), namaMK varchar(30), sks integer, primary key(kodeMK) )
ambilMK ( nim varchar(3), kodeMK varchar(3), nilai integer, primary key(nim, kodeMK) )
Dalam hal ini, field nim dan kodeMK pada tabel ambilMK merupakan foreign key. Apabila diperhatikan, tabel mhs dengan tabel ambilMK saling berelasi karena nim dalam tabel ambilMK berasal dari nim dalam tabel mhs (master tabel).
Demikian pula antara tabel mk dengan ambilMK. Kedua tabel ini juga berelasi karena kodeMK dalam tabel ambilMK berasal dari kodeMK dalam tabel mk.
Untuk record masing-masing tabel, misalkan diberikan berikut ini:
Tabel : mhs
nim   namaMhs 001   Joko 002   Amir 003   Budi
Tabel : mk
kodeMK   namaMK      sks A01   Kalkulus   3 A02   Geometri   2 A03   Aljabar      3
Tabel : ambilMK
nim   kodeMK   nilai 001   A01   3 001   A02   4 001   A03   2 002   A02   3 002   A03   2 003   A01   4 003   A03   3
Selanjutnya misalkan akan dicari data-data sbb:
- Tampilkan nim dan nama mahasiswa yang mengambil Kalkulus (kodeMK = A01)
- Tampilkan nim, nama mahasiswa dan jumlah SKS matakuliah yang diambil untuk setiap mahasiswa
- Berapakah IPK mahasiswa bernama Budi (NIM: 003)
- Tampilkan nim, nama mahasiswa, dan IPK setiap mahasiswa
Untuk menjawab no. 1, kita harus cari dulu tabel mana yang terkait dengan query tersebut. Apabila kita akan mencari query tersebut berdasarkan nama matakuliah ‘Kalkulus’ maka tabel yang terkait adalah mhs (untuk menampilkan nim dan nama mahasiswa), mk (karena dalam tabel ini terdapat nama matakuliah), serta tabel ambilMK (karena tabel ini berisi data pengambilan matakuliah oleh mahasiswa).
Setelah menentukan tabel mana yang terkait dengan query, selanjutnya dapat dibuat statement SQL nya, yaitu
SELECT mhs.nim, mhs.namaMhs FROM mhs, mk, ambilMK WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK AND mk.namaMK = 'Kalkulus';
Maksud mhs.nim, maksudnya adalah menampilkan data nim yang berasal dari tabel mhs. Dapat pula Anda menuliskan SQL nya seperti ini
SELECT ambilMK.nim, mhs.namaMhs FROM mhs, mk, ambilMK WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK AND mk.namaMK = 'Kalkulus';
Hal ini dikarenakan untuk menampilkan nim dapat pula berasal dari tabel ambilMK.
Perhatikan bagian FROM dari kedua statement SQL di atas. Nama-nama tabel yang terkait dengan query dituliskan pada bagian FROM ini.
Selanjutnya apa maksud dari perintah mhs.nim = ambilMK.nim? Perintah ini digunakan untuk merelasikan tabel mhs dan ambilMK, dimana kedua tabel direlasikan melalui field nim di kedua tabel. Hal yang sama juga berlaku untuk perintah mk.kodeMK = ambilMK.kodeMK.
Sedangkan perintah mk.namaMK = ‘Kalkulus’ digunakan sebagai syarat pencarian data (menampilkan data mahasiswa yang mengambil matakuliah Kalkulus).
Apabila pencarian data mahasiswa yang mengambil Kalkulus ini berdasarkan kode matakuliah (A01), maka Anda tidak perlu menggunakan tabel mk, tapi cukup tabel mhs dan ambilMK saja. Hal ini dikarenakan kodeMK dapat diketahui dari tabel ambilMK. Sehingga perintah SQL nya
SELECT mhs.nim, mhs.namaMhs FROM mhs, ambilMK WHERE mhs.nim = ambilMK.nim AND ambilMK.kodeMK = 'A01';
Ketiga statement SQL di atas akan menghasilkan hasil yang sama yaitu
NIMÂ Â Â namaMhs 001Â Â Â Joko 003Â Â Â Budi
Selanjutnya akan dijawab pertanyaan no. 2. Seperti halnya langkah penyelesaian pertanyaan no. 1, langkah pertama harus kita tentukan dulu tabel apa saja yang terkait dengan query. Dalam hal ini kita akan menggunakan tabel mhs, mk dan ambilMK. Tabel mhs untuk menampilkan nim dan nama mahasiswa. Tabel mk digunakan karena di dalamnya terdapat data SKS. Sedangkan tabel ambilMK digunakan karena berisi data yang menunjukkan pengambilan matakuliah mahasiswa.
Perintah SQL untuk pertanyaan no. 2 adalah
SELECT mhs.nim, mhs.namaMhs, sum(mk.sks) as jumlahSKS FROM mhs, mk, ambilMK WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK GROUP BY ambilMK.nim
atau
SELECT mhs.nim, mhs.namaMhs, sum(mk.sks) as jumlahSKS FROM mhs, mk, ambilMK WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK GROUP BY mhs.nim
Untuk mencari jumlah SKS setiap mahasiswa, kita menggunakan perintah sum(mk.sks). Supaya perintah ini bisa jalan, maka harus ditambahkan perintah GROUP BY mhs.nim atau GROUP BY ambilMK.nim. Hal ini dikarenakan proses penjumlahan sks harus dilakukan pada setiap kelompok data. Maksudnya apa ya?
Perhatikan perintah SQL berikut ini
SELECT mhs.nim, mhs.namaMhs, mk.sks FROM mhs, mk, ambilMK WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
Perintah di atas akan menampilkan nim, nama mahasiswa serta sks setiap mata kuliah yang diambil. Hasilnya adalah
NIM   namaMhs      SKS 001   Joko      3 001   Joko      2 001   Joko      3 002   Amir      2 002   Amir      3 003   Budi      3 003   Budi      3
Untuk pertanyaan no. 2 ini, seharusnya akan tampil hasil berikut
NIM   namaMhs      jumlahSKS 001   Joko      8 002   Amir      5 003   Budi      6
Sehingga supaya mendapatkan hasil seperti di atas, kita akan menjumlahkan setiap SKS yang diambil mahasiswa, berdasarkan kelompok mahasiswa, dalam hal ini dikelompokkan berdasarkan NIM. Mengapa tidak dikelompokkan berdasarkan nama mahasiswa? Wah bisa gawat kalau ini terjadi, karena ada kemungkinan nama mahasiswa yang sama. Oleh karena itu harus ada perintah GROUP BY mhs.nim
Untuk pembahasan nomor yang lain akan dilanjutkan pada tutorial yang lain.
| Baca Juga Artikel Terkait |
Kata kunci:




saya maksud dg pencerahan bapak , cma saya masih bingun dalam penerapanya dalam perhitungan saya, saya lg buat laporan ahir bulanan sperti ini
januari:
penerimaan Rp 10000
pengeluaran Rp 1000
_________
saldo akhir Rp. 9000
bulan februari
saldo awal Rp. 9000
penerimaan Rp. 1000
_________
jumlah Rp. 10000
pengeluaran Rp. 5000
_________
saldo aheri Rp. 5000
dan seterusnya saldo akhir bulan itu menjadi saldo awal berikutnya, apakah saya harus buat tabel saldo akhir atau bisa di buat pada secrip
phpny saja, minta pencerahnya terima kasih,
to nurhidayat: mmm… cukup 1 tabel saja dengan field misal: kodeTransaksi, besarTransaksi, tglTransaksi, saldo. Untuk kode transaksi misal 0 = penerimaan, 1 = pengeluaran. Untuk proses perhitungan saldonya, anda bisa buat di scriptnya. Untuk query transaksi berdasarkan bulan, bisa anda manfaatkan tglTransaksi (diambil bulannya).
WHERE bulan >= 1 AND bulan <= 4 ini klo transaksi di mulai awal tahun yaitu dari bulan 1 s/d 12 itu dalam tahun yg sama, sekarang yang jadi masalah kalo pembukuan di mulai dari bulan 7 s/d 6 thun berikutny
gman itu pak? kebetulan saya lg buat sistem kuangan siswa pastinya pembukuan di mulai bulan juli (7) sd bulan juni (6) thun berikutnya, kalo kt mo tau saldo bulan april berarti kan dari
bulan juli(7) sampai bulan april(4) makash
to nurhidayat: oleh karena itu yang disimpan jangan hanya bulan transaksinya saja, namun tanggal-bulan-tahun lengkap, seperti jawaban saya sebelumnya (di atas).
iya sudah pak, WHERE bulan >= 1 AND bulan <= 10
lebih bingung lagi waktu saya coba samppai bulan ke 10 ko kenapa ya di php saya hanya bisa baca hurf 1 saja dan mengansumsikan itu = 1 AND bulan <= 12 begitu juga ke 12 mengansumsikan itu <=1, tpi saya coba di sql jadi apa ada yang bermasalah dg php saya ya pa!!
yang <=10 membaca hanya 1 dah ketemu jawabnya ternyata tipey bukan int melain
kn varchar karena saya kemaren memakai bulany bukan interger, yang belum ketmu
caranya yg menjeumlahkan dari bulan juli sampai bulan juni thun berikutnya
klo bisa kahsih tau secripny makasih
Website ini benar-benar sangat membantu,thanks!amal anda akan selalu mengalir,karena ilmu anda bermanfaat bagi orang banyak
to ivan: amin… thanks mas ivan atas doanya
asp.net nya dong pak?
to ivan: hu.. 3x saya blm bisa asp.net
Alhamdulillah ada pencerahan, mas klo contoh script phpnya bagaimana ya ?
Almadulillah ada pencerahan, mas saya masih belajar, klo script phpnya seperti apa ya ?
saya mo nanya nih, gimana perintah di sql tuk gabung lebih satu tabel yg saya miliki perintah sqlnya namun masih error
perintah sql yg saya gunakan adalah
select DataObat.NamaObat, sum(ObatKeluar.JPS), sum(ObatMasuk.JPS) Group by DataObat.NamaObat
artikel2 banyak membantu bagi pemula seperti saya, btw aplikasinya saya buat menggunakan Delphi 7….tq…majulah indonesia..aminnn
mas mau tanya..
kalau script sql diatas di jadikan php gimana ya?
saya bingung tentang tata letak titik komanya
thanks