SQL仅返回复杂的一对多查询的部分结果

时间:2016-06-25 18:12:52

标签: sql ms-access

我的表格结构如下

内镜

PK:Endoscopy_Id
FK:PatientId

这与......有很多对比。

病人

PK:Patient_Id

EndoscopyHistology

是一对多

组织学

PK:Histology_Id
FK:PatientId

这是一对多的

HistologyDetails

PK:HistologyDet_Id
FK:Histology_Id

我正在尝试执行一个查询,该查询将提取所有的'astroscopies'以及所有患者的组织学和组织学的一些领域。目前我没有得到所有结果,我不知道为什么。我正在使用:

SELECT 
    Endoscopy.*, 
    Histology.Diagnosis, Histology.NatureOfSpec, 
    Histology.Histology, 
    HistolDetails.MeasurementLargest, HistolDeatils.NumberBx 
FROM 
    Endoscopy  
JOIN 
    PatientData ON Endoscopy.HospNum_Id = PatientData.HospNum_Id   
JOIN 
    Histology ON Histology.HospNum_Id = PatientData.HospNum_Id  
JOIN
    HistolDetails ON Histology.Histology_Id = HistolDetails.Histology_Id
WHERE 
    histology.VisitDate = endoscopy.VisitDate 
    AND (ERFINDINGSSTR LIKE '%Barret%'OR ERDIAGNOSISSTR LIKE '%Barret%') 
    AND Endoscopy.ERPROCEDUREPERFORMED LIKE '%astroscopy%'

1 个答案:

答案 0 :(得分:2)

由于您只使用Join,因此只有在这些表中存在相关行,PatientData,Histology和Histoldetails时才会返回数据集。

如果连接表中的数据可能有也可能没有关系,您将需要使用左连接。

仅供参考使用加入,就像您在下图中的内部联接相关联

enter image description here