2014-01-31 87 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