gpt4 book ai didi

SQL 连接 6 个表

转载 作者:行者123 更新时间:2023-12-04 13:37:31 25 4
gpt4 key购买 nike

请看图。有5个表与带有指定ID的指定表相关。
现在我需要具有相同约会 id 的所有数据..加入查询应该是什么?有人可以帮我吗? enter image description here

这是生成的查询(我使用的是左外连接)

SELECT     dbo.Appointment.appointment_id, dbo.Appointment.patient_id, dbo.PatientInvestigaiton.investigation_name, dbo.PatientInvestigaiton.investigation_id, 
dbo.PatientTreatmentMedicine.medecine_id, dbo.PatientTreatmentMedicine.medicinename, dbo.PatientTreatmentMedicine.medicinetype,
dbo.PatientFindings.finding_id, dbo.PatientFindings.finding_value, dbo.PatientAdvice.advice_description, dbo.PatientCC.cc_value, dbo.PatientCC.cc_id,
dbo.PatientDiagonosis.diagonosis_name, dbo.PatientDiagonosis.diagonosis_id

FROM dbo.Appointment LEFT OUTER JOIN

dbo.PatientInvestigaiton ON dbo.Appointment.appointment_id = dbo.PatientInvestigaiton.appointment_id LEFT OUTER JOIN
dbo.PatientTreatmentMedicine ON dbo.Appointment.appointment_id = dbo.PatientTreatmentMedicine.appointment_id LEFT OUTER JOIN
dbo.PatientFindings ON dbo.Appointment.appointment_id = dbo.PatientFindings.appointment_id LEFT OUTER JOIN
dbo.PatientDiagonosis ON dbo.Appointment.appointment_id = dbo.PatientDiagonosis.appointment_id LEFT OUTER JOIN
dbo.PatientCC ON dbo.Appointment.appointment_id = dbo.PatientCC.appointment_id LEFT OUTER JOIN
dbo.PatientAdvice ON dbo.Appointment.appointment_id = dbo.PatientAdvice.appointment_id

where dbo.Appointment.appointment_id='46';

最佳答案

appointmnent_idAppointment的主键, 这个表有一个 1:N与所有 6 个表的关系。

在这种情况下,加入这 6 个表将产生 具有重复数据的多行 ,就像一个 Cartesian Product .例如如果(只有一个 id=46 ),有:

  • 3 排 PatientInvestigation
  • 6 排 PatientTreatmentMedicine
  • 4 排 PatientFindings
  • 2 行用于 PatientDiagnosis
  • 2 行用于 PatientCC
  • 5 行用于 PatientAdvice

  • 你会得到 3x6x4x2x2x5 = 1440 结果集中的行,而您只需要 3+6+4+2+2+5 (+1) = 23 行。这比需要的行数(和更多的列数)多 60 倍。

    如果你这样做会更好 6 个单独的查询,每个查询中的一个(6 个)表具有一个 JOIN (以及从基表 Appointment 获取数据的另一个查询)。和 合并应用代码中6个查询的结果 .基本查询和连接到第一个表的查询的示例:

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

    Join-1 to 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

    关于SQL 连接 6 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771975/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com