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