2014-05-09 1 views
0

내가보기 및 기능에 완전 외부 조인을하고 있어요 사이에 조인 완전 외부에서 부분적인 데이터를 얻을 수 있습니다 : 'THING'의 일부 값에 대한어떻게 뷰 및 함수

SELECT vw.*,fnc.* 
FROM MyView AS vw 
FULL OUTER JOIN 
dbo.MyFunction() AS fnc 
ON vw.Name=fnc.Name 
WHERE vw.Name='THING' 

, 뷰와 함수에서 반환 된 모든 필드를 가져옵니다. 그러나 함수가 정상적으로 'THING'값을 반환하지 않으면 (즉, "SELECT * FROM dbo.MyFunction() WHERE Name='THING'이 NULL을 반환합니다), 나는 아무것도 반환하지 않습니다. 함수에서 반환 된 값이없는 경우에도 항상 존재하는 뷰에서 값을 반환하는 방법이 있습니까?

+0

'MyView'에' 'THING' '이있는 행이 있으면'fnc '와 일치하는 쿼리가 해당 행을 반환해야합니다. –

답변

0

작성된대로 쿼리는 원하는대로 수행해야합니다.

SELECT vw.*, fnc.* 
FROM MyView vw LEFT OUTER JOIN 
    dbo.MyFunction() fnc 
    ON vw.Name = fnc.Name 
WHERE vw.Name = 'THING'; 

이것은 당신이 'THING'와 뷰의 행을 원하는 강조 : 그것은 더 명확하게 기록 될 것입니다.

문제가 잘못되었을 수도 있습니다. 당신은 아마도 뷰 또는 함수 중 하나에서 모든 'THINGS'을 원하는 경우 :

SELECT vw.*, fnc.* 
FROM MyView vw FULL OUTER JOIN 
    dbo.MyFunction() fnc 
    ON vw.Name = fnc.Name 
WHERE vw.Name = 'THING' OR fnc.Name = 'THING' 

당신이 정말로 무엇을 찾고있다.

+0

문제가 무엇인지 알기 때문에 그것은 내 실수였습니다. 실제로''... where fnc.Name = 'THING' '이 내 실제 코드에 있습니다. 그 함수는 그 데이터를 돌려주지 않았기 때문에 아무 것도 리턴하지 못했습니다. – EGr

+0

예. 'vw.Name = 'THING''은'vw.Name IS NULL'을 제외합니다. 그래서 이것은 실제로 대답이 아닙니다 ..... –

관련 문제