2016-09-29 2 views
0

안녕하세요. 이제 테이블이 2 개 있습니다. 다른 하나는 교육자입니다. 임시 테이블 #QUESTIONS이 있습니다. 이 임시 테이블의 두 행이있다테이블에 값으로 인해 SQL이 전송됩니다.

QuestionId, SenderType, 센더

1 교사 475

2 연구소

1 지금 발신자 타입 교사 나이면 보낸 사람 유형이 연구소 인 경우 교사 이름과 성을 TEACHER 테이블에서 가져오고 싶습니다. INSTITUTE 테이블에서 연구소 이름을 가져오고 싶습니다.

어떻게해야합니까? 그것?

미리 감사

+0

당신은 무엇을하려고 했습니까? –

+0

나는 질문, 발신자 이름 및 수신자 응답과 같은 페이지 결과를 원하기 때문에이 발신자 이름에 도달해야합니다. –

+0

저장 프로 시저를 사용하고 발신자 유형을 매개 변수로 전달하고 있습니까? –

답변

0

에 그것은 UNION

SELECT q.SenderType , 
     t.Name + ' ' + t.Surname Name 
FROM #QUESTIONS q 
     JOIN TEACHER t ON q.SenderId = t.ID 
WHERE q.SenderType = 'Teacher' 

UNION ALL 

SELECT q.SenderType , 
     i.Name 
FROM #QUESTIONS q 
     JOIN INSTITUTE i ON q.SenderId = i.ID 
WHERE q.SenderType = 'Institute'; 
0

이 경우 다른 무언가를 시도 할 수 있습니다 사용하여 달성 될 수있다. 샘플을보십시오.

SELECT SENDERTYPE,Q.SENDERID,COALESCE(T.NAME,I.NAME) AS NAME,COALESCE(T.SURNAME,I.SURNAME) AS NAME FROM QUESTIONS Q 
LEFT JOIN TEACHER T ON T.ID=Q.SENDERID AND Q.SENDERTYPE='TEACHER' 
LEFT JOIN INSTITUTE I ON I.ID=Q.SENDERID AND Q.SENDERTYPE='INSTITUTE' 
0

사용 CASE 문 :

SELECT 
    Q.QuestionId, 
    Q.SenderType, 
    CASE Q.SenderType WHEN 'Teacher' THEN T.Name+ ' '+T.Surname ELSE I.Name END AS Name 
FROM @tblQuestion Q 
LEFT JOIN @tblTeacher T ON Q.SenderId=T.Id AND Q.SENDERTYPE='TEACHER' 
LEFT JOIN @tblInstitute I ON Q.SenderId=I.Id AND Q.SENDERTYPE='INSTITUTE' 
관련 문제