Query Menampilkan Foriegn Key yang Saling Terkait


Artikel kali ini kita akan membahas cara menampikan atau mengetahui kolom foriegn key yang saling terkait didalam database.

Langsung kita praktekan, contoh kita mempunyai 3 tabel yaitu pasien, kelurahan dan utd_pendonor. 3 tabel ini adalah database sik dari simrs khanza, lihat selengkapnya dibawah


Tabel kelurahan


+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| kd_kel | bigint(20) | NO | PRI | NULL | auto_increment |
| nm_kel | varchar(60) | NO | | NULL | |
+--------+-------------+------+-----+---------+----------------+


Tabel pasien


+-------------------+------------------------------------------------------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------------------------------------------------------------------------------+------+-----+---------+-------+
| no_rkm_medis | varchar(15) | NO | PRI | NULL | |
| nm_pasien | varchar(40) | YES | MUL | NULL | |
| no_ktp | varchar(20) | YES | MUL | NULL | |
| jk | enum('L','P') | YES | | NULL | |
| tmp_lahir | varchar(15) | YES | | NULL | |
| tgl_lahir | date | YES | | NULL | |
| nm_ibu | varchar(40) | NO | | NULL | |
| alamat | varchar(200) | YES | MUL | NULL | |
| gol_darah | enum('A','B','O','AB','-') | YES | | NULL | |
| pekerjaan | varchar(35) | YES | | NULL | |
| stts_nikah | enum('BELUM MENIKAH','MENIKAH','JANDA','DUDHA','JOMBLO') | YES | | NULL | |
| agama | varchar(12) | YES | | NULL | |
| tgl_daftar | date | YES | | NULL | |
| no_tlp | varchar(40) | YES | | NULL | |
| umur | varchar(20) | NO | | NULL | |
| pnd | enum('TS','TK','SD','SMP','SMA','SLTA/SEDERAJAT','D1','D2','D3','D4','S1','S2','S3','-') | NO | | NULL | |
| keluarga | enum('AYAH','IBU','ISTRI','SUAMI','SAUDARA','ANAK') | YES | | NULL | |
| namakeluarga | varchar(50) | NO | | NULL | |
| kd_pj | char(3) | NO | MUL | NULL | |
| no_peserta | varchar(25) | YES | MUL | NULL | |
| kd_kel | int(11) | NO | MUL | NULL | |
| kd_kec | int(11) | NO | MUL | NULL | |
| kd_kab | int(11) | NO | MUL | NULL | |
| pekerjaanpj | varchar(35) | NO | | NULL | |
| alamatpj | varchar(100) | NO | | NULL | |
| kelurahanpj | varchar(60) | NO | | NULL | |
| kecamatanpj | varchar(60) | NO | | NULL | |
| kabupatenpj | varchar(60) | NO | | NULL | |
| perusahaan_pasien | varchar(8) | NO | MUL | NULL | |
| suku_bangsa | int(11) | NO | MUL | NULL | |
| bahasa_pasien | int(11) | NO | MUL | NULL | |
| cacat_fisik | int(11) | NO | MUL | NULL | |
| email | varchar(50) | NO | | NULL | |
| nip | varchar(30) | NO | | NULL | |
| kd_prop | int(11) | NO | MUL | NULL | |
| propinsipj | varchar(30) | NO | | NULL | |
+-------------------+------------------------------------------------------------------------------------------+------+-----+---------+-------+


Tabel utd_pendonor


+----------------+------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------------------+------+-----+---------+-------+
| no_pendonor | varchar(15) | NO | PRI | NULL | |
| nama | varchar(40) | NO | | NULL | |
| no_ktp | varchar(20) | NO | | NULL | |
| jk | enum('L','P') | NO | | NULL | |
| tmp_lahir | varchar(15) | NO | | NULL | |
| tgl_lahir | date | NO | | NULL | |
| alamat | varchar(100) | NO | | NULL | |
| kd_kel | int(11) | NO | MUL | NULL | |
| kd_kec | int(11) | NO | MUL | NULL | |
| kd_kab | int(11) | NO | MUL | NULL | |
| kd_prop | int(11) | NO | MUL | NULL | |
| golongan_darah | enum('A','AB','B','O') | NO | | NULL | |
| resus | enum('(-)','(+)') | NO | | NULL | |
| no_telp | varchar(40) | NO | | NULL | |
+----------------+------------------------+------+-----+---------+-------+


Pada kasus yang sering terjadi sebenarnya kita tidak mengetahui foriegn key mana saja yang terhubung dengan tabel, sedangkan kita membutuhkan  informasi tabel mana saja yang saling terhubung dengan foriegn key kolom kd_kel, dibawah adalah contoh query untuk untuk mengetahui foriegn key yang saling terkait

 

SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,

REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME

FROM information_schema.KEY_COLUMN_USAGE

WHERE REFERENCED_TABLE_NAME = 'kelurahan'

AND REFERENCED_COLUMN_NAME = 'kd_kel'

AND TABLE_SCHEMA='sik'




LihatTutupKomentar