join select sql | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: join select sql

Monday, October 5, 2026

join select sql

🔗🏥
Kuliah Basis Data · Artikel 15 dari 16
Satukan Data dengan JOIN: Menjawab Kebutuhan Informasi lewat SELECT
Cara menyambungkan tabel pasien, kunjungan, dokter, dan diagnosis menjadi satu laporan yang bisa kamu baca dan pertanggungjawabkan.
JOIN SQL INNER JOIN LEFT JOIN Rekam Medis
⏱️
9 menit
Estimasi baca
📊
Pemula–Menengah
Level
📅
2026
Tahun

Bayangkan kamu petugas rekam medis, lalu atasan meminta: "Tolong, daftar pasien hipertensi bulan ini beserta dokter yang menanganinya." Nama pasien ada di satu tabel, diagnosis di tabel lain, dokter di tabel ketiga. Menyalin manual? Itu bukan kerja cerdas, apalagi kalau datanya ribuan baris.

Di sinilah JOIN SQL jadi penyelamat. Perintah ini menyambungkan beberapa tabel menjadi satu hasil utuh dalam sekali SELECT. Artikel 15 dari 16 seri Kuliah Basis Data ini membantu kamu, mahasiswa D3 RMIK semester 3, memahami cara kerja JOIN SQL, membaca hasilnya, lalu memilih query yang tepat untuk kebutuhan informasi tertentu. Kita mulai dari pertanyaan paling mendasar: kenapa data kesehatan sengaja dipecah ke banyak tabel?

Mengapa JOIN SQL Dibutuhkan pada Data Rekam Medis?

Kalau kamu pernah melihat ruang filing atau bagian pendaftaran, kamu tahu informasi pasien tidak ditulis dalam satu lembar. Identitas ada di kartu pasien, jadwal praktik ada di buku dokter, dan kode penyakit ada di katalog ICD-10. Basis data bekerja serupa: data dipecah ke beberapa tabel agar tidak ada informasi yang tersimpan berulang (Elmasri & Navathe, 2016). Nama dokter cukup ditulis sekali di tabel dokter, bukan disalin ke ribuan baris kunjungan.

Konsekuensinya, satu pertanyaan sering membutuhkan data dari beberapa tabel sekaligus. JOIN SQL berperan seperti petugas yang mencocokkan nomor rekam medis dari satu berkas ke berkas lain. Silberschatz dkk. (2019) menjelaskan bahwa operasi join menggabungkan baris-baris berhubungan dari dua relasi menjadi satu. Satu hal penting: JOIN SQL hanya bekerja di dalam SELECT, jadi ia menampilkan gabungan data tanpa mengubah isi tabel.

Kita pakai kasus sebuah klinik pratama dengan empat tabel berikut sebagai bahan latihan sepanjang artikel:

🗂️ Struktur & data contoh klinik
pasien    (id_pasien PK, no_rm, nama)
dokter    (id_dokter PK, nama_dokter)
diagnosis (kode_icd10 PK, nama_diagnosis)
kunjungan (id_kunjungan PK, id_pasien FK, id_dokter FK,
           kode_icd10 FK, tgl_kunjungan)

pasien                          kunjungan
1 | RM-000101 | Siti Aminah     1 | 1 | 1 | I10   | 2026-09-14
2 | RM-000102 | Budi Santoso    2 | 2 | 1 | E11.9 | 2026-09-15
3 | RM-000103 | Dewi Lestari    3 | 1 | 2 | J06.9 | 2026-09-20

dokter                               diagnosis
1 | dr. Andi Pratama, Sp.PD          I10   | Hipertensi esensial (primer)
2 | dr. Rina Wulandari               E11.9 | Diabetes melitus tipe 2
                                     J06.9 | Infeksi saluran napas atas akut
🔥 Fakta Menarik
Permenkes Nomor 24 Tahun 2022 tentang Rekam Medis mewajibkan fasilitas pelayanan kesehatan menyelenggarakan rekam medis elektronik (Kemenkes RI, 2022). Artinya data pasien tersimpan terstruktur di sistem informasi, sehingga kemampuan menggabungkan dan membaca data lewat JOIN SQL makin relevan untuk kariermu.

Anatomi JOIN SQL: Kunci Penghubung dan Klausa ON

Setiap JOIN SQL punya tiga bagian: tabel mana yang digabung, jenis JOIN-nya, dan kondisi pencocokan di klausa ON. Kondisi itu hampir selalu mempertemukan primary key (PK) di satu tabel dengan foreign key (FK) di tabel lain. Pada contoh kita, id_pasien adalah PK di tabel pasien dan FK di tabel kunjungan. Tanpa kunci penghubung, database tidak tahu baris mana yang berpasangan.

📐 Rumus Dasar JOIN SQL
SELECT  kolom_yang_dibutuhkan
FROM    tabel_A
[jenis] JOIN tabel_B
        ON tabel_A.kunci = tabel_B.kunci;
Baca ON sebagai: "cocokkan baris A dengan baris B kalau nilai kuncinya sama."

Contoh pertama: tampilkan nama pasien beserta tanggal kunjungan dan kode diagnosisnya.

SQL
SELECT p.nama, k.tgl_kunjungan, k.kode_icd10
FROM pasien AS p
INNER JOIN kunjungan AS k
        ON p.id_pasien = k.id_pasien;
Hasil
nama          | tgl_kunjungan | kode_icd10
--------------+---------------+-----------
Siti Aminah   | 2026-09-14    | I10
Budi Santoso  | 2026-09-15    | E11.9
Siti Aminah   | 2026-09-20    | J06.9

Perhatikan dua hal. Siti muncul dua kali karena memang dua kali berkunjung. Dewi tidak muncul sama sekali karena belum punya kunjungan. Itulah perilaku dasar JOIN SQL jenis INNER JOIN: hanya baris yang berpasangan yang ikut tampil.

⚡ Insight Penting
Satu baris hasil JOIN SQL mewakili satu pasangan data yang cocok. Jumlah baris hasil mengikuti sisi yang paling "banyak" (kunjungan), bukan jumlah pasien. Pegang prinsip ini saat kamu menganalisis hasil SELECT.
💡 Tips
Pakai alias (pasien AS p) agar query lebih ringkas. Awali setiap kolom dengan alias tabelnya, misalnya p.nama, supaya jelas asal datanya dan tidak ambigu ketika dua tabel punya kolom bernama sama.

INNER JOIN vs LEFT JOIN: Dua Jenis JOIN SQL yang Paling Sering Dipakai

Analogi gampangnya: INNER JOIN seperti daftar hadir yang hanya mencatat orang yang datang. LEFT JOIN seperti daftar undangan lengkap, dengan kolom "hadir" yang dibiarkan kosong untuk tamu yang tidak datang. Dokumentasi resmi MySQL dan PostgreSQL sama-sama menjelaskan kedua jenis ini sebagai bagian inti sintaks JOIN (Oracle, 2026; PostgreSQL Global Development Group, 2026).

Aspek INNER JOIN LEFT JOIN
Baris yang tampilHanya yang berpasangan di kedua tabelSemua baris tabel kiri, plus pasangannya bila ada
Data tanpa pasanganHilang dari hasilTetap tampil dengan nilai NULL
Contoh di RMIKLaporan kunjungan lengkap dengan nama dokterDaftar semua pasien terdaftar, termasuk yang belum pernah berkunjung
Risiko salah bacaMengira data tanpa pasangan tidak adaMengira NULL berarti data rusak

Sekarang kita tampilkan semua pasien, termasuk yang belum pernah berkunjung:

SQL
SELECT p.nama, k.tgl_kunjungan
FROM pasien AS p
LEFT JOIN kunjungan AS k
       ON p.id_pasien = k.id_pasien;
Hasil
nama          | tgl_kunjungan
--------------+--------------
Siti Aminah   | 2026-09-14
Siti Aminah   | 2026-09-20
Budi Santoso  | 2026-09-15
Dewi Lestari  | NULL
🔍 Analisis: Kapan Memilih Jenis JOIN SQL yang Mana?
Tanyakan satu hal pada dirimu: "Apakah data tanpa pasangan penting untuk laporan ini?"
  • Tidak penting (hanya ingin kunjungan yang tercatat) → INNER JOIN.
  • Penting (ingin tahu siapa yang belum punya kunjungan) → LEFT JOIN, lalu tambahkan WHERE k.id_kunjungan IS NULL untuk menyaring pasien tanpa kunjungan.
Pada data contoh, filter tersebut hanya menyisakan Dewi Lestari. Teknik ini berguna untuk memeriksa kelengkapan data atau mencari pasien yang perlu ditindaklanjuti.
⚠️ Perhatian
Jangan lupa kondisi ON. Tanpa pencocokan kunci, setiap baris pasien dipasangkan dengan semua baris kunjungan: 3 pasien × 3 kunjungan = 9 baris, dan sebagian besar pasangan itu palsu. Dalam laporan rekam medis, hasil seperti ini menyesatkan.

Langkah Menyusun Query JOIN SQL dari Kebutuhan Informasi

Kesalahan paling umum mahasiswa adalah langsung mengetik query sebelum jelas apa yang ditanyakan. Balik urutannya: mulai dari kebutuhan informasi, baru ke sintaks. Kasus kita: "Tampilkan nama pasien, nama dokter, dan nama diagnosis untuk kunjungan pasien hipertensi (I10) pada September 2026, urut berdasarkan tanggal."

1
Rumuskan kebutuhan jadi kolom hasil. Dari kalimat tadi, hasil akhirnya berisi: nama pasien, nama dokter, nama diagnosis, dan tanggal kunjungan.
2
Petakan tiap kolom ke tabel asalnya. Nama pasien dari pasien, nama dokter dari dokter, diagnosis dari diagnosis, tanggal dari kunjungan.
3
Telusuri jalur kunci. Tabel kunjungan memegang FK ke tiga tabel lain, jadi ia menjadi pusat. Mulai dari FROM kunjungan, lalu sambungkan satu per satu.
4
Pilih jenis JOIN. Kita hanya butuh kunjungan dengan data lengkap, jadi INNER JOIN sudah tepat.
5
Tambahkan filter dan urutan, lalu uji hasilnya. Gunakan WHERE untuk kode I10 dan rentang tanggal, ORDER BY untuk urutan, lalu cocokkan hasilnya dengan data asli.
SQL
SELECT p.nama, d.nama_dokter, g.nama_diagnosis, k.tgl_kunjungan
FROM kunjungan AS k
INNER JOIN pasien    AS p ON k.id_pasien  = p.id_pasien
INNER JOIN dokter    AS d ON k.id_dokter  = d.id_dokter
INNER JOIN diagnosis AS g ON k.kode_icd10 = g.kode_icd10
WHERE k.kode_icd10 = 'I10'
  AND k.tgl_kunjungan BETWEEN '2026-09-01' AND '2026-09-30'
ORDER BY k.tgl_kunjungan;
Hasil
nama         | nama_dokter            | nama_diagnosis              | tgl_kunjungan
-------------+------------------------+-----------------------------+--------------
Siti Aminah  | dr. Andi Pratama, Sp.PD| Hipertensi esensial (primer)| 2026-09-14
💡 Tips
Bangun JOIN SQL bertahap. Jalankan dulu dengan satu JOIN, cek hasilnya, baru tambah JOIN berikutnya. Kalau ada yang janggal, kamu langsung tahu JOIN mana penyebabnya.

Menganalisis Hasil JOIN SQL Sebelum Kamu Memercayainya

Query yang berjalan tanpa error belum tentu benar. Dalam laporan morbiditas, satu baris ganda saja bisa membuat jumlah kasus membengkak. Biasakan memeriksa hasil JOIN SQL dengan empat pertanyaan ini:

✅ Analisis: Empat Cek Kewajaran Hasil
  1. Jumlah baris. Apakah sesuai perkiraanmu? Bandingkan dengan COUNT(*) di tabel sumber.
  2. Nilai NULL. Kalau memakai LEFT JOIN, NULL wajar muncul untuk data tanpa pasangan. Kalau memakai INNER JOIN, NULL patut dicurigai.
  3. Baris ganda. Satu pasien muncul berkali-kali itu wajar bila kunjungannya banyak. Kalau satu kunjungan yang sama muncul ganda, periksa kunci di klausa ON.
  4. Uji sampel. Ambil satu pasien, lalu cocokkan hasilnya secara manual dengan tabel asal.

Sekarang uji kemampuanmu. Tentukan jenis JOIN SQL untuk tiga kebutuhan informasi berikut, lalu cocokkan dengan jawabannya:

Kebutuhan informasi Pilihan query Alasan
Laporan kunjungan lengkap dengan nama dokterINNER JOINHanya data yang berpasangan yang dilaporkan
Semua pasien terdaftar beserta tanggal kunjungannyaLEFT JOIN (pasien ke kunjungan)Pasien tanpa kunjungan tetap tampil
Pasien yang belum pernah berkunjungLEFT JOIN + IS NULLMenyaring baris yang tidak punya pasangan
🏆 Kesimpulan

Kamu sekarang punya pegangan untuk menjawab kebutuhan informasi dari data yang tersebar. Poin utamanya:

  • JOIN SQL menyambungkan tabel lewat kunci penghubung (PK dan FK) di klausa ON, tanpa mengubah isi tabel.
  • INNER JOIN menampilkan data yang berpasangan, sedangkan LEFT JOIN mempertahankan semua baris tabel kiri.
  • Susun query dari kebutuhan informasi: kolom hasil, tabel asal, jalur kunci, jenis JOIN, lalu filter.
  • Selalu periksa jumlah baris, NULL, dan duplikasi sebelum memercayai hasil.

Menguasai JOIN SQL berarti kamu bisa mengubah tabel-tabel terpisah menjadi informasi yang siap dipakai untuk laporan. Pada artikel terakhir, kita akan merangkai semua konsep basis data dari rancangan sampai query.

Ceritakan di komentar: JOIN mana yang paling membingungkan buatmu, INNER atau LEFT?
📖 Daftar Referensi
  1. Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
  2. Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill Education.
  3. Kementerian Kesehatan Republik Indonesia. (2022). Peraturan Menteri Kesehatan Nomor 24 Tahun 2022 tentang Rekam Medis.
  4. Oracle Corporation. (2026). MySQL 8.0 Reference Manual: JOIN Clause. https://dev.mysql.com/doc/refman/8.0/en/join.html
  5. PostgreSQL Global Development Group. (2026). PostgreSQL Documentation: Joins Between Tables. https://www.postgresql.org/docs/current/tutorial-join.html
#BasisData #Database #RMIK #JOINSQL #SELECT #QueryData
🏷️ Label: JOIN SQL untuk Kebutuhan Informasi INNER JOIN & LEFT JOIN
📚
Artikel Utama Seri
Daftar Isi Kuliah Basis Data
Artikel ini bagian dari seri Kuliah Basis Data (Artikel 15 dari 16). Lihat seluruh materi dalam satu halaman.
Buka Daftar Isi →

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux