多对多的SQL选择查询来获取匹配的记录

时间:2016-06-17 21:08:42

标签: mysql sql

我有三张桌子

内镜检查与患者是多对一的,组织学是一对多

组织学通常与内窥镜一对一,但这种关系在现实生活中不存在于数据库中

我想获得每位患者的内窥镜检查的组织学,其中组织学的日期与内窥镜检查的日期相同

到目前为止我已经

select Endoscopy.*,Histology.Diagnosis
from Endoscopy
INNER JOIN PatientData
ON Endoscopy.HospNum_Id=PatientData.HospNum_Id
INNER JOIN Histology
ON Histology.HospNum_Id=PatientData.HospNum_Id

然而,这导致数据集,其中对于每个组织学记录,患者的一个(第一个)内窥镜检查是重复的。如何获得与组织学相关的内窥镜检查而不是重复检查?

1 个答案:

答案 0 :(得分:1)

为避免重复使用distinct并在date_of_test上添加条件

    Select distinct 
        Endoscopy.*
        ,Histology.Diagnosis 
    from Endoscopy 
    INNER JOIN PatientData ON Endoscopy.HospNum_Id=PatientData.HospNum_Id 
    INNER JOIN Histology ON Histology.HospNum_Id=PatientData.HospNum_Id
    WHERE Histology.date_of_test = Endoscopy.date_of_test