TELAH DIBUKA !!!

Toko Ebook Tutorial "RosihanAri.Net"


Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress | Tutorial Java SE


 photo 300x250_zpsff09f9e7.gif
Slot iklan tersedia, pasang iklan di atas

Ebook yang direkomendasikan untuk Anda
Kunjungi Toko Ebook RosihanAri.Net

Penggunaan Subquery dalam Query SQL (Bag. 2)


July 14th, 2008 | by rosihanari | Cetak Artikel Cetak Artikel

GampSMS SMS Gateway

Artikel ini merupakan kelanjutan dari bagian 1 tentang Penggunaan Subquery dalam Query SQL. Pada artikel ini akan dibahas pertanyaan 4 s/d 6 yang diberikan pada artikel sebelumnya.

Apabila Anda belum membaca artikel sebelumnya, maka silakan baca terlebih dahulu.

Sekarang akan kita bahas pernyataan No. 4

Pada kasus ini, kita akan menghapus data mahasiswa (dari tabel mhs) yang memiliki IPK terendah (kasus di DO). Secara logika, penyelesaian dari soal ini adalah, kita harus cari dulu mahasiswa (nim) yang memiliki IPK terendah. Setelah diperoleh nim mahasiswa tersebut, selanjutnya kita gunakan sebagai syarat untuk menghapus data mahasiswa yang ada di tabel mahasiswa.

Berikut ini adalah query untuk mencari nim yang memiliki IPK terendah

SELECT ambilmk.nim
FROM ambilmk, mk
WHERE ambilmk.kodeMK = mk.kodeMK
GROUP BY ambilmk.nim
ORDER BY sum(ambilmk.nilai * mk.sks)/sum(mk.sks) ASC
LIMIT 0, 1;

Secara logika, untuk mencari nim dengan IPK terendah adalah, dengan menampilkan semua nim dan IPK nya terlebih dahulu, lalu mensorting berdasarkan IPK secara ASCENDING. Dengan demikian nim yang ber IPK terendah akan berada pada record pertama (setelah sorting). Lalu ambil record pertama tersebut dengan LIMIT 0, 1. Sehingga berdasarkan logika itu, jadilah query di atas. Tapi hal ini belum menjawab pertanyaan No. 4.

Selanjutnya berdasarkan hasil query untuk mencari nim ber IPK terendah itu, kita gunakan sebagai syarat penghapusan data mahasiswa di tabel mahasiswa.

DELETE FROM mhs
WHERE nim = (
            SELECT ambilmk.nim
            FROM ambilmk, mk
            WHERE ambilmk.kodeMK = mk.kodeMK
            GROUP BY ambilmk.nim
            ORDER BY sum(ambilmk.nilai * mk.sks)/sum(mk.sks)
            LIMIT 0, 1
            );

Dari query di atas, mahasiswa yang akan terhapus adalah yang bernim ’002′, dengan IPK 2.4 Kasihan ya… Kejam sekali kebijakannya :’-(

Sekarang akan kita bahas soal No. 5

Pada soal ini, kita diminta menampilkan mahasiswa (nim dan nama) yang memiliki IPK di bawah 3.5.

Untuk menjawab soal ini, logika yang kita gunakan adalah: langkah pertama tampilkan dahulu semua nim dan IPK nya masing-masing (gunakan GROUP BY nim). Lalu persempit filternya dengan menambahkan syarat bahwa yang ditampilkan hanya yang ber IPK < 3.5 (gunakan HAVING).

Berikut ini querynya

SELECT ambilmk.nim,
       sum(ambilmk.nilai*mk.sks)/sum(mk.sks) as IPK
FROM ambilmk, mk
WHERE ambilmk.kodeMK = mk.kodeMK
GROUP BY ambilmk.nim
HAVING IPK &lt; 3.5;

Mengapa syarat IPK < 3.5 tidak diletakkan di WHERE? alasannya adalah IPK bukan suatu field tabel, tapi suatu alias untuk kalkulasi yang menggunakan aggregate function sum().

Wah ternyata kok gak ada subquerynya ya? he..he.. maaf saya salah mengambil kasus. Anggap saja ini bonus dari saya :-)

OK… selanjutnya soal No. 6 (the last soal)

Pada soal ini, kita diminta menaikkan semua nilai sebesar 1 point untuk matakuliah ‘A03′. Alasannya sang dosen melakukan kesalahan dalam memberi nilai :-)
Dalam hal ini, sama saja kita mengupdate data nilai dengan syarat hanya pada matakuliah ‘A03′. Sehingga query SQL nya adalah:

UPDATE ambilmk
SET nilai = nilai + 1
WHERE kodeMK = 'A03';

Maksud dari SET nilai = nilai + 1 adalah mengupdate nilai yang baru yaitu nilai yang lama ditambah 1.

Wah lagi-lagi kok gak ada subquerynya ya? :-) Sekali lagi maaf, saya salah ambil kasus lagi. Anggap saja ini bonus kedua buat Anda. Mudah-mudahan dengan 4 kasus dari 6 kasus yang ada, dapat memberikan pengetahuan bagi Anda tentang subquery ini.


Baca Juga Artikel Terkait
Penggunaan Subquery dalam Query SQL (Bag. 1)
Perintah SQL (SELECT) untuk Multi Tabel (Bag. 2)
Perintah SQL (SELECT) untuk Multi Tabel (Bag. 1)
Menyisipkan Elemen ke dalam Array di PHP
Mencari Jumlah Hari dalam Bulan Tertentu


 photo 300x250_zpsff09f9e7.gif
Slot iklan tersedia, pasang iklan di atas


Kata kunci:


Ada 2 komentar dalam artikel ini.



  1. rozikin says:

    assalam pak, saya mau tanya kalau sortnya pakai 2 syarat bagaimana, misalnya di sort dengan nilai dan abjad studi kasus untuk pemberian nis siswa dengan mensort nilai pendaftar untuk dimasukkan ke dalam kelas kemudian si sort dengan abjad kemudian diberi nis..
    wasalam
    terima kasih sebelumnya

  2. Ali says:

    Pak, kalau menghitung rata-rata dengan mengabaikan record 0 bagaimana?
    kalau di Excell bisa di gunakan fungsi =Averageif(range;”>0″)



 

Komentar/pertanyaan Anda!

Mohon maaf, komentar/pertanyaan yang menggunakan email palsu atau komentar bernada negatif, cemooh, umpatan, cacian atau sejenisnya secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

Mohon maaf jika seandainya ada beberapa pertanyaan Anda yang tidak direspon atau ditanggapi mengingat banyaknya komentar yang masuk dan keterbatasan kemampuan/ilmu saya dalam menjawab pertanyaan satu persatu. Saya harap Anda bisa memahami dan memakluminya.

Semua komentar atau pertanyaan yg masuk tidak akan langsung tampil di halaman ini, karena akan dimoderasi dahulu.


*