2014-01-31 86 views
0

我正在使用SQL Server管理工作室2012年。請tae一兩分鐘瞭解這個問題,這是非常重要的:( 該場景是: 我有三個表,病人,patientAccount和消息。 現在,我將值插入表患者和消息第一,然後一段時間後,我將值插入PatientAccount Table.Now,問題是在我使用SQL與軟件)我有這個查詢:查詢滿足給定的條件

select 
    * 
from Patient 
    join Message on Patient.GUID = Message.PatientGUID 
where Message.GUID = "..Data 

如果我在此查詢中添加PatientAccount,就像

select 
    * 
from Patient 
    join Message on Patient.GUID = Message.PatientGUID, PatientAccount 
where Message.GUID = "..Data 

它成爲強制性的值在當我將它們添加到PatientMessage表,但我真正想要的是價值被採取了由查詢,如果沒有在PatientAccount表中的數據相同的時刻加入到PatientAccount表,並且如果patientAccount表中沒有插入任何值,則只應從Patient和Message表中選取值。 ,我希望它在一個查詢中。

回答

0

爲此目的,您可以使用outer join,以便選擇查詢不依賴於PatientAccount表。類似下面

SELECT * 
FROM patient p 
     LEFT JOIN patientaccount pa 
       ON p.guid = pa.patientguid 
     LEFT JOIN message m 
       ON p.guid = m.patientguid 
WHERE m.guid = "id" 

查詢該選擇查詢將始終從PatientAccount表中返回的記錄,但如果有針對特定病人沒有數據然後從PatientAccount列將是空的

+0

我覺得沒必要左加入消息表,因爲值首先插入患者和消息表中。但它也可以正常工作。 –

+0

它可以以任何方式工作,無論您指定什麼類型的連接 – Leo