2014-01-31 6 views
0

SQL Server Management Studio 2012를 사용하고 있습니다.이 문제를 이해하기 위해 1-2 분 정도만 기다려주십시오. 정말 중요합니다. ( 시나리오 : 환자, patientAccount 및 Message 테이블이 3 개 있습니다. 이제 Patient 및 Message에 값을 삽입하고 나서 PatientAccount Table.Now에 값을 삽입하는 시간이 경과 한 후 SQL에서 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 

내가 데이터가 PatientAccount 테이블에 존재하는 경우 쿼리에 의해 흡수되는 값을 PatientMessage 테이블에 추가,하지만 내가 정말 원하는 것은하고 같은 순간에 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

내가 왼쪽의 필요를 생각하지 null이됩니다 값이 환자 및 메시지 테이블에 처음 삽입되었으므로 메시지 테이블에 대한 조인. 그러나 또한 잘 작동합니다. –

+0

지정하는 조인의 종류에 상관없이 어느 쪽이든 작동합니다. – Leo

관련 문제