2017-09-25 4 views
0
Use Surveydb; 
create view VW_Service 
    As 
    (select A.id as 'Encounter ID' 
      ,A.startDateTime as 'Enconter StartDateTime' 
      ,A.endDateTime as 'Encounter EndDateTime' 
      ,B.id as 'Service ID' 
      ,B.startDateTime as 'Service StartDateTime' 
      ,B.endDateTime as 'Service EndDateTime' 
      ,C.label as 'Services Name Code Label' 
      ,C.symbol as 'Service Name Code Symbol' 
      ,C.system as 'Service Name Code System' 
    from Code C, 
      Encounter A, 
      Service B 
    where 
    a.id = b.encounterId 
    and c.id = b.nameCodeId) 
    JOIN 
    (select a.label as 'Service Status Code Label' 
      ,a.symbol as 'Service Status Code Symbol' 
      ,b.system as 'Services Status Code System' 
     from 
     Code a, Code b 
     Where 
     a.id = b.id) 

세 테이블을 포함하는 뷰를 만들려고하고 있으며 테이블 중 하나를 자체 조인해야합니다. 위의 스크립트는보기에 대한 별도의 쿼리입니다. 첫 번째 쿼리는 세 테이블 모두로 구성되며 두 번째 하위 쿼리는 코드 테이블의 자체 조인 쿼리입니다. 두 쿼리에 모두 참여하려고합니다. 이견있는 사람?중첩 된 쿼리로 뷰 만들기

+0

안녕, 몇 가지 질문으로 시작하기 :

하지만 "자기 조인은"유선, 당신이 당신에게 동일한 결과를 줄 것이다 전혀 필요하지 않습니다. 어떤 데이터베이스 엔진을 사용하고 둘째로 위의 SQL에서 얻은 오류는 무엇입니까? 감사! –

+0

위 쿼리에 대한 optmizatrion을 요청하고 있다고 생각합니다. 따라서 샘플 데이터와 기대되는 O/P 결과를 게시하십시오. –

+0

이 두 하위 쿼리에는 공통된 필드가 있습니까? 그들은 어떻게 합류합니까? 누락 된 조각의 나머지 부분을 쓸 수 있다고 지정하면 – JNevill

답변

0

두 개의 하위 쿼리 조인은 매우 간단합니다. 두 개의 하위 쿼리를 가져 와서 일반 테이블로 조인합니다. 이와 같이 :

select * 
from (select id from table a) as a 
join (select id from table b) as b 
    on a.id = b.id 

이러한 하위 쿼리를 조인하는 방법 만 알면됩니다. 귀하의 경우에는, 나는 테이블 코드에서 ID 필드와 같은 것이라고 생각합니다.

join (select a.label as 'Service Status Code Label' 
     ,a.symbol as 'Service Status Code Symbol' 
     ,a.system as 'Services Status Code System' 
    from Code a 
)