Main Menu

Belajar SQL Dasar #13: Subquery (Query di Dalam Query)


👍 0 ❤️ 0 💡 0 🔥 0 🙌 0 🥳 0
Belajar SQL Dasar #13: Subquery (Query di Dalam Query)

Halo teman-teman semuanya, di seri ketigabelas ini kita akan membahas tentang subquery, atau query di dalam query. Subquery sangat berguna saat kita ingin menggunakan hasil dari suatu query sebagai kondisi atau nilai dalam query lainnya. Ini bisa membuat proses pencarian data jadi lebih fleksibel dan dinamis.

Contoh Tabel

Untuk latihan, kita gunakan dua tabel berikut:

  1. Tabel jurusan

    id nama_jurusan
    1 IPA
    2 IPS
  2. Tabel siswa

    id nama umur kelas jurusan_id
    1 Ali 18 XII IPA 1 1
    2 Budi 17 XI IPS 2 2
    3 Citra 19 XII IPA 3 1
    4 Dewi 16 X IPA 2 1
    5 Eko 18 XII IPS 1 2

Apa Itu Subquery?

Subquery adalah sebuah query yang disisipkan di dalam query lain. Subquery bisa berada di:

  • SELECT
  • FROM
  • WHERE

Biasanya subquery ditulis di dalam tanda kurung ().

1. Subquery di Dalam WHERE

Contoh: Tampilkan semua siswa yang berasal dari jurusan “IPA”

SELECT * FROM siswa
WHERE jurusan_id = (
  SELECT id FROM jurusan WHERE nama_jurusan = 'IPA'
);

Penjelasan:

  • Subquery mencari id jurusan IPA → hasilnya 1
  • Lalu digunakan untuk memfilter siswa yang jurusan_id-nya = 1

Hasil:

id nama umur kelas jurusan_id
1 Ali 18 XII IPA 1 1
3 Citra 19 XII IPA 3 1
4 Dewi 16 X IPA 2 1

2. Subquery Menggunakan IN

Contoh: Tampilkan siswa yang berasal dari jurusan “IPA” atau “IPS”

SELECT * FROM siswa
WHERE jurusan_id IN (
  SELECT id FROM jurusan WHERE nama_jurusan IN ('IPA', 'IPS')
);

Ini bisa digunakan kalau kita ingin mencocokkan banyak nilai dari subquery.

3. Subquery di Dalam SELECT

Kita bisa menghitung data tambahan per baris menggunakan subquery.

Contoh: Tampilkan nama siswa dan jumlah total siswa yang berada dalam jurusan yang sama

SELECT nama,
  (SELECT COUNT(*) FROM siswa AS s2
   WHERE s2.jurusan_id = s1.jurusan_id) AS total_satu_jurusan
FROM siswa AS s1;

Hasil (misalnya):

nama total_satu_jurusan
Ali 3
Budi 2
Citra 3
Dewi 3
Eko 2

4. Subquery di Dalam FROM

Subquery juga bisa digunakan sebagai tabel sementara dalam bagian FROM.

SELECT jurusan_id, COUNT(*) AS jumlah
FROM (
  SELECT * FROM siswa WHERE umur >= 18
) AS siswa_dewasa
GROUP BY jurusan_id;

Ini menghitung jumlah siswa yang berumur ≥ 18, dikelompokkan berdasarkan jurusan.

Tips Penggunaan Subquery

  • Gunakan subquery jika tidak memungkinkan dilakukan dengan JOIN biasa
  • Untuk efisiensi, pertimbangkan JOIN jika subquery terlalu dalam atau kompleks
  • Pastikan subquery menghasilkan data yang sesuai dengan konteks pemanggilnya (1 nilai, 1 kolom, atau 1 tabel)

Kesimpulan

Dalam artikel ini, kita telah mengenal subquery, sebuah teknik powerful yang memungkinkan kita menjalankan query di dalam query lain. Dengan subquery, kita bisa membangun logika pencarian data yang lebih fleksibel dan dinamis.

Terima Kasih


SQL
Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami