July 17, 2024

Tips Membuat Query SQL Untuk Tabel yang Saling Berelasi

3 min read

Dalam pengembangan suatu aplikasi ataupun sistem informasi, tidak terlepas dari penggunaan database. Dimana database yang digunakan tentunya melibatkan lebih dari satu tabel yang saling berelasi (Multi tabel). Namun penggunaan tabel yang saling berelasi membutuhkan  query SQL yang cukup kompleks, tergantung dari tingkat kerumitan relasi antar tabel yang digunakan.

Berikut beberapa tips untuk membuat query SQL untuk tabel yang saling berelasi satu sama lain. Dimana pembahasan dititikberatkan pada penggunaan query SELECT. Untuk mempermudah, berikut diberikan contoh 3 buah tabel yang saling berelasi, dengan studi kasus sebuah klinik.

A. Tabel Pasien

tabel

B. Tabel Dokter

tabel2

C. Tabel Dokter

tabel3

Berdasarkan ketiga tabel tersebut, maka relasi antar tabel dapat dilihat pada gambar berikut :

tabel4

Misalkan kita akan menampilkan data pasien yang diperiksa oleh dokter ‘Maya Aris’. Dimana data yang ditampilkan oleh adalah NoPasien dan NamaPasien. Untuk pembuatan query SQL pada kasus tersebut, dapat diterapkan langkah-langkah berikut :

1. Tentukan kolom/field mana saja yang akan ditampilkan, dimana kolom/field ini yang akan dinyatakan pada query ‘SELECT namakolom1, namakolom2, …’
2.Tentukan tabel mana saja yang akan digunakan, dimana tabel ini akan dinyatakan pada klausa ‘… FROM tabel1, tabel2, …’

3. Tentukan kolom yang menjadi penguhubung/relasi antar masing-masing tabel yang digunakan. Dimana kolom ini dinyatakan pada Klausa ‘…. WHERE tabel1.Field-x = tabel2.Field-x ….. ‘

Catatan : jika jumlah kolom yang menjadi penghubung/relasi lebih dari satu kolom, maka dihubungkan dengan operator ‘AND’, seperti ‘WHERE tabel1.Field-x = tabel2.Field-x AND tabel2.Field-y = tabel3.Field-y … ‘

4. Tentukan apa yang menjadi prasyarat yang diminta pada kasus tersebut. Misalnya prasyaratnya adalah dokter = ‘Maya Aris’, maka querynya menjadi ‘WHERE …. AND dokter.NamaDokter = ‘ Maya Aris’.

Untuk menjawab kasus di atas , maka jika kita mengikuti langkah-langkah diatas :

1. Kolom/field yang digunakan : NoPasien dan NamaPasien yang diambil dari tabel pasien.

Catatan: karena menggunakan tabel lebih dari satu yang saling berelasi maka, setiap penyebutan nama kolom/field, sebaiknya disebutkan terlebih dahulu nama tabel dimana kolom/field berasal, seperti berikut : NamaTabel.NamaKolom.

Untuk kasus diatas, maka query SQLnya menjadi :

‘SELECT pasien.NoPasien, pasien.NamaPasien’

2. Tabel yang akan digunakan pada kasus ini meliputi : Tabel Pasien untuk mengetahui NoPasien dan NamaPasien, Tabel Periksa untuk mendapatkan data jadwal periksa dosen,  dan Tabel Dokter untuk mendapatkan NamaDokter yang menjadi prasyarat, dalam hal ini NamaDokter = ‘Maya Aris’

Maka query SQLnya menjadi :

‘FROM pasien, periksa, dokter’

3. Kolom penghubung antara ketiga tabel tersebut adalah kolom NoPasien sebagai penghubung antar tabel pasien dan tabel periksa, serta kolom NoDokter sebagai penghubung antara tabel Periksa dan tabel Dokter.

Maka query SQLnya menjadi :

‘WHERE pasien.NoPasien = periksa.NoPasien AND periksa.NoDokter = dokter.NoDokter’

4. Yang menjadi prasyarat adalah dokter = ‘Maya Aris’.

Maka query SQLnya menjadi :

‘AND dokter.NamaDokter = ‘Maya Aris’

Berdasarkan langkah-langkah tersebut, maka Query SQL untuk kasus tersebut menjadi :

‘SELECT pasien.NoPasien, pasien.NamaPasien

FROM pasien, periksa, dokter

WHERE pasien.NoPasien = periksa.NoPasien AND periksa.NoDokter = dokter.NoDokter

AND dokter.NamaDokter = ‘Maya Aris’

Jika Query SQL di atas dijalankan maka akan dihasilkan tabel sebagai berikut :

tabel5

Jika dilihat dari tabel yang dihasilkan di atas, maka terdapat NamaPasien yang double. Untuk mengantisipasi hal tersebut, kita dapat menambahkan klausa ‘DISTINCT’ pada ‘SELECT’, Hingga query SQL menjadi :

‘SELECT DISTINCTpasien.NoPasien, pasien.NamaPasien

FROM pasien, periksa, dokter

WHERE pasien.NoPasien = periksa.NoPasien AND periksa.NoDokter = dokter.NoDokter

AND dokter.NamaDokter = ‘Maya Aris’

 Sehingga tabel yang dihasilkan menjadi :

tabel6

Langkah-langkah di atas dapat kita terapkan untuk beberapa kasus berikut yang melibatkan beberapa tabel :

1. Buatlah data periksa pasien atas nama ‘Dira Anifa’ yang terdiri atas NoPeriksa, tanggal periksa dan Nama Dokter

Query SQLnya :

SELECT periksa.NoPeriksa, periksa.TglPeriksa, dokter.NamaDokter
FROM pasien, periksa, dokter
WHERE pasien.NoPasien = periksa.NoPasien
AND periksa.NoDokter = dokter.NoDokter
AND pasien.NamaPasien = ‘Dira Anifa’

2. Berapa jumlah pasien dokter ‘Fahmi’ ?

Query SQLnya :

SELECT DISTINCT COUNT(NoPasien)

FROM periksa, dokter

WHERE periksa.NoDokter = dokter.NoDokter

AND dokter.NamaDokter = ‘Fahmi’

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright © All rights reserved. | Newsphere by AF themes.