Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL nối 6 bảng

Kể từ appointmnent_id là khóa chính của Appointment , bảng này có 1:N mối quan hệ với tất cả 6 bảng.

Đây là trường hợp khi tham gia vào 6 bảng này sẽ tạo ra nhiều hàng có dữ liệu trùng lặp , nó giống như một Cartesian Product . Ví dụ:if (chỉ một id=46 ), có:

  • 3 hàng cho PatientInvestigation
  • 6 hàng cho PatientTreatmentMedicine
  • 4 hàng cho PatientFindings
  • 2 hàng cho PatientDiagnosis
  • 2 hàng cho PatientCC
  • 5 hàng cho PatientAdvice

bạn sẽ nhận được 3x6x4x2x2x5 = 1440 các hàng trong tập hợp kết quả, trong khi bạn chỉ cần 3 + 6 + 4 + 2 + 2 + 5 (+1) = 23 hàng. Đó là số hàng nhiều hơn 60 lần (và với nhiều cột hơn) so với mức cần thiết.

Sẽ tốt hơn nếu bạn thực hiện 6 truy vấn riêng biệt với một JOIN với một (trong số 6) bảng trong mỗi truy vấn (và một truy vấn nữa để lấy dữ liệu từ bảng cơ sở Appointment ). Và kết hợp kết quả của 6 truy vấn trong mã ứng dụng . Ví dụ cho truy vấn cơ sở và truy vấn tham gia vào bảng đầu tiên:

Bảng cơ sở :

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

Tham gia-1 để điều tra bệnh nhân :

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. TSQL Shred XML - Điều này có đúng không hay có cách nào tốt hơn (newbie @ shredding XML)

  2. Lưu trữ HTML trong SQL Server

  3. Giới thiệu về OPENJSON với các ví dụ (SQL Server)

  4. Báo cáo xác thực thông số trong báo cáo ssrs

  5. Hàm có giá trị bảng trong SQL Server là gì?