Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Połączenie SQL 6 tabel

Od appointmnent_id jest podstawowym kluczem Appointment , ta tabela ma 1:N związek ze wszystkimi 6 tabelami.

Dzieje się tak, gdy połączenie z tymi 6 tabelami spowoduje powstanie wielu wierszy ze zduplikowanymi danymi , to jest jak Cartesian Product . Na przykład if (tylko dla jednego id=46 ), są:

  • 3 wiersze dla PatientInvestigation
  • 6 wierszy dla PatientTreatmentMedicine
  • 4 wiersze dla PatientFindings
  • 2 wiersze dla PatientDiagnosis
  • 2 wiersze dla PatientCC
  • 5 wierszy dla PatientAdvice

otrzymasz 3x6x4x2x2x5 =1440 wierszy w zestawie wyników, podczas gdy potrzebujesz tylko 3+6+4+2+2+5 (+1) =23 wydziwianie. To 60 razy więcej wierszy (i o wiele więcej kolumn) niż potrzeba.

Lepiej, jeśli wykonasz 6 oddzielnych zapytań z jednym JOIN do jednej (z 6) tabel w każdym zapytaniu (i jeszcze jedno zapytanie, aby pobrać dane z tabeli bazowej Appointment ). I połącz wyniki 6 zapytań w kodzie aplikacji . Przykład dla zapytania podstawowego i zapytania do przyłączenia do pierwszej tabeli:

Tabela podstawowa :

SELECT 
    a.appointment_id, 
    a.patient_id
FROM 
    Appointment AS a
WHERE
    a.appointment_id = 46

Dołącz-1 do badania pacjenta :

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. Używanie GROUP BY z FIRST_VALUE i LAST_VALUE

  2. SQL, pytania o join

  3. Użyj NEWID(), aby utworzyć unikalną wartość w SQL Server

  4. Kiedy muszę używać początku/końca bloków i słowa kluczowego Go w programie SQL Server?

  5. Zaplanowane uruchomienie procedury składowanej na serwerze SQL