은 좀 공상 조인으로 쿼리를 작성하려합니다. 이 작업을 수행 할 수 있음을 알고 있지만 작업 수행 방법을 기억하지 않습니다. 나는이 내 쿼리의 from
부분에 select
절없이 실행 얻기 위해 노력했다그들에 다시 두 개의 테이블을 조인 자아 함께
SELECT parentLink.SourceWorkItemID, parentLink.TargetWorkItemID,
childLink.SourceWorkItemID, childLink.TargetWorkItemID,
childLink.WorkItemLinkTypeSK--,childLinkType.LinkName
FROM dbo.FactWorkItemLinkHistory parentLink
JOIN dbo.DimWorkItemLinkType parentLinkType (NOLOCK)
ON parentLink.WorkItemLinkTypeSK = parentLinkType.WorkItemLinkTypeSK
LEFT JOIN dbo.FactWorkItemLinkHistory childLink (NOLOCK)
ON parentLink.TargetWorkItemID = childLink.SourceWorkItemID
AND childLink.RemovedByPersonSK IS NULL
AND childLink.WorkItemLinkTypeSK IN
(SELECT sublink.WorkItemLinkTypeSK
FROM dbo.DimWorkItemLinkType sublink
WHERE sublink.LinkName = 'Child'
)
--LEFT JOIN dbo.DimWorkItemLinkType childLinkType (NOLOCK)
-- ON childLink.WorkItemLinkTypeSK = childLinkType.WorkItemLinkTypeSK
-- AND childLinkType.LinkName = 'Child'
WHERE parentLink.SourceWorkItemID = 1917
AND parentLink.RemovedByPersonSK IS NULL
AND parentLinkType.LinkName = 'Releases Story'
하지만 저를 벗어난 유지 : 그것은 지금처럼
여기 내 쿼리입니다.
내가 찾고 있어요 결과는 뭔가에게 이것이다
1917 1915 1915 1916 2
1917 1913 1913 1914 2
1917 1913 1913 4349 2
1917 1921 1921 1922 2
1917 1918 NULL NULL NULL
1917 1920 NULL NULL NULL
나는 from
절에 select
을 사용하여 해당 결과를 얻을 수 있지만, 내가 그것을 피할 수 있다면 차라리 거기 select
를 사용하지 않을 것입니다.
나는이 변화를 시도 :
- 의 주석이 마지막 조인 (주 select 절에서
childLinkType.LinkName
) - 원치 않는
select
절 (조인 마지막으로 위의 라인)를 제거합니다. 내가 할 때
나는이 얻을 :
너무 많은 행이1917 1915 1915 1916 2 Child
1917 1915 1915 1917 20 NULL
1917 1915 1915 1919 7 NULL
1917 1915 1915 1911 4 NULL
1917 1913 1913 1914 2 Child
1917 1913 1913 1917 20 NULL
1917 1913 1913 1911 4 NULL
1917 1913 1913 4349 2 Child
1917 1921 1921 1922 2 Child
1917 1921 1921 1917 20 NULL
1917 1918 1918 1919 7 NULL
1917 1918 1918 1912 4 NULL
1917 1918 1918 1917 20 NULL
1917 1920 1920 1911 4 NULL
1917 1920 1920 1917 20 NULL
. 그리고 DimWorkItemLinkType 테이블에서 nulls가 일치하는 것을 원하지 않습니다. 그래서 나는 마지막 join을 inner join으로 만든다. 그럼 난이 얻을 : (첫 번째 데이터 세트에서 1918 1920)는 "아이"가없는 항목을 제거했습니다
1917 1915 1915 1916 2 Child
1917 1913 1913 1914 2 Child
1917 1913 1913 4349 2 Child
1917 1921 1921 1922 2 Child
합니다. 나는 아직도 내 결과에서 그들을 필요로한다. 나는이 나에게 결과의 첫 세트를주고받을 여전히 (절에서에서) 선택을 제거 할 수있는 방법
어떤 아이디어?
참고 : 나는 (보고 목적으로 승인 테이블을 사용하여) TFS에 TFS_Warehouse 데이터베이스에 대해 2010 서버를이를 실행하고 있습니다. 다른 사람이 말했듯이, 그것을 파괴하고 단순화하기 위해 노력하고 가치가있을 수도 있습니다 - -
가 보인다, 우리에게 세부 사항에 대한 커다란 질문을 던지기보다는. 아무도이 문제를 해결하고 싶어하지 않는 것 같습니다. 그냥 생각. - P – richard
그냥 하위 쿼리를 제거하려면 다음 난 당신이 임시 테이블을 사용할 수 있습니다 제안하고 실행하는 대신에 합류했다. – pavanred
은 내가 TFS_Warehouse 실행이 없습니다. 출력을 게시했지만 입력을 생략했습니다. 주어진 산출물에 대한 실제 투입물을 게시하면 더 많은 사람들이 귀하를 도울 수 있습니다. –