2016-06-25 106 views
0

我的表結構如下SQL只返回一些結果對於一個複雜的一對多查詢

內鏡

PK:Endoscopy_Id 
FK:PatientId 

這是多對一與...

病人

PK:Patient_Id 

這是一個許多與EndoscopyHistology

組織學

PK:Histology_Id 
FK:PatientId 

這是一個許多與

HistologyDetails

PK:HistologyDet_Id 
FK:Histology_Id 

我試圖執行一個查詢w生病從所有患者的組織學和組織學細節中提取所有'星座圖'和一些領域。目前我沒有得到所有結果,我不知道爲什麼。我使用:

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%' 
+0

在爲什麼下調? –

+1

因爲如果PatientData,Histology或Histoldetails中沒有數據,那麼該行將不會返回,因爲您正在進行常規聯接,那就是該聯接類型的性質。嘗試將它們切換到左外連接,並查看是否獲得了您期望的數據並從那裏開始 – TheRk

+0

好問題Sebastian - 您已經很好地提出了您的問題並顯示了您的代碼,表明了一些努力。不知道爲什麼它被標記下來。您是使用查詢嚮導 - 還是嘗試使用查詢視圖來獲得您想要的?右鍵單擊加入行以設置它的屬性 - 從那裏您可以根據@TheRk建議 – dbmitch

回答

2

既然你只用加入它只會返回你的數據集,如果行相關的表格,PatientData,組織學和Histoldetails的存在。

如果連接表中的數據可能存在或不存在關係,則需要使用左連接。

FYI只是用加入像你有相關因素爲內連接下面的圖片

enter image description here