Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL bergabung dengan 6 tabel

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Berapa nomor telepon dunia terpanjang yang harus saya pertimbangkan dalam SQL varchar(panjang) untuk telepon

  2. ExecuteNonQuery() untuk Sisipan

  3. Ubah 'smalldatetime' menjadi 'datetimeoffset' di SQL Server (Contoh T-SQL)

  4. PDO sqlsrv:tidak dapat menemukan driver

  5. Sisipan massal item anak yang sangat diindeks (Sql Server 2008)