Sejak appointmnent_id
adalah kunci utama Appointment
, tabel ini memiliki 1:N
hubungan dengan semua 6 tabel.
Ini adalah kasus di mana bergabung ke 6 tabel ini akan menghasilkan beberapa baris dengan data duplikat , ini seperti Cartesian Product
. Misalnya jika (hanya untuk satu id=46
), ada:
- 3 baris untuk
PatientInvestigation
- 6 baris untuk
PatientTreatmentMedicine
- 4 baris untuk
PatientFindings
- 2 baris untuk
PatientDiagnosis
- 2 baris untuk
PatientCC
- 5 baris untuk
PatientAdvice
Anda akan mendapatkan 3x6x4x2x2x5 =1440
baris dalam set hasil, sementara Anda hanya membutuhkan 3+6+4+2+2+5 (+1) =23
baris. Itu 60 kali lebih banyak baris (dan dengan lebih banyak kolom) dari yang dibutuhkan.
Lebih baik jika Anda melakukan 6 kueri terpisah dengan satu GABUNG ke satu (dari 6) tabel di setiap kueri (dan satu lagi permintaan untuk mendapatkan data dari tabel dasar Appointment
). Dan gabungkan hasil dari 6 kueri dalam kode aplikasi . Contoh kueri dasar dan kueri untuk bergabung ke tabel pertama:
Tabel dasar :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Gabung-1 ke PatientInvestigation :
SELECT
pi.investigation_name,
pi.investigation_id
FROM
Appointment AS a
JOIN
PatientInvestigation AS pi
ON pi.appointment_id = a.appointment_id
WHERE
a.appointment_id = 46