2014-10-09 3 views
0

4 필드를 반환하는 다소 간단한 쿼리가 있습니다. [Year], [ServiceCredited], [Salary][CoveredEmployer]입니다.간단한 SELECT 쿼리로 인해 Cartesian Join이 발생합니까?

Table1을 사용하여 처음 세 개의 필드를 검색 할 수 있지만 [CoveredEmployer]을 가져올 수 없습니다. [CoveredEmployer]을 얻으려면 Employer_Org_ID와 같은 세부 정보가있는 Table2에 가입 한 다음 Employer_Org_Id를 사용하여 Table2를 Table3에 가입시켜 고용주 이름을 얻거나 [CoveredEmployer]을 얻어야합니다.

SELECT a.SCHOOL_YEAR as Year, a.TOTAL_SERVICE_CREDIT as ServiceCredited, a.RETIREMENT_SALARY as Salary, c.ORG_NAME as CoveredEmployer 
FROM TBL1 a 
INNER JOIN TBL2 b ON a.MEMBER_ACCOUNT_ID = b.MEMBER_ACCOUNT_ID 
INNER JOIN TBL3 c ON b.ORG_ID = c.ORG_ID 
WHERE a.MEMBER_ACCOUNT_ID = 136079 
ORDER BY YEAR DESC; 

나는 [년]에 의해 결과를 그룹화, 코드, 다음 나는 곳이 1 개 이상 고용주의 [CoveredEmployer] 값이 "여러 고용주"이 갖는

var lyosGroupedByYear = lyos.GroupBy(x => x.Year).Select(x => new Years_Of_Service() 
      { 
       Year = x.Key, 
       //ServiceCredited = x.Sum(y => y.ServiceCredited), 
       //Salary = x.Sum(y => y.Salary), 
       ServiceCredited = x.First().ServiceCredited, 
       Salary = x.First().Salary, 
       CoveredEmployer = x.Count() > 1 ? "Multiple Employers" : x.First().CoveredEmployer 
      }).ToList(); 

문제와 그러나 위의 쿼리는 Cartesion Join을 얻고 있으므로 그룹화 된 각 레코드의 출력에 "Multiple Employers"라는 결과가 나타납니다 (아래는 간단히 2013 & 2014 결과, 실제 결과는 1982 년 같은 문제로 돌아갑니다) :

2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Special School Dist-St. Louis 
2014   Hazelwood R-I Schools 
2014   St. Louis Community College 
2014   Special School Dist-St. Louis 
2014   St. Louis Community College 
2014   Special School Dist-St. Louis 
2014   St. Louis Community College 
2014   Special School Dist-St. Louis 
2014   St. Louis Community College 
2014   Special School Dist-St. Louis 
2014   St. Louis Community College 
2014   Special School Dist-St. Louis 
2014   St. Louis Community College 
2014   Special School Dist-St. Louis 
2014   St. Louis Community College 
2014   St. Louis Community College 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Hazelwood R-I Schools 
2013 1 95476.8 St. Louis Community College 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 St. Louis Community College 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 St. Louis Community College 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 St. Louis Community College 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 St. Louis Community College 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 St. Louis Community College 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 St. Louis Community College 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 St. Louis Community College 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 
2013 1 95476.8 Special School Dist-St. Louis 

이것은 처음으로 데카르트 조인을 다루는 것입니다. 누구든지 내 쿼리에서이 문제를 해결할 수있는 방법을 알고 있습니까?

+2

그래서 각'tbl2' 레코드의 각'tbl1' 레코드에 대한 여러'tbl2' 기록, 및/또는 복수의'tbl3' 레코드가? 최종 결과 중 하나에 대한 원시 데이터의 샘플이 도움이 될 수 있습니다. 그래도 그룹화하지 않거나 쿼리에 집계되지 않는 이유는 무엇입니까? –

+0

Alex에게 답장을 보내 주셔서 감사합니다. 나는 그 문제를 알아내는 것을 끝내었다. 나는 Tbl2 & Tbl3에 대해'JOIN'을 맞았지만, Tbl1 & Tbl2에 대해서는 Join에 잘못된 Key 값을 사용하고있었습니다. 나는 몇 가지 다른 수정을했다. 그것은 내 문제의 근원이었다. –

+0

@AnalyticLunatic 문제를 직접 해결해 주신 것을 축하드립니다. 이 질문이 "답변 됨"으로 나타날 수 있도록 솔루션을 게시하고 스스로 수락 해주십시오. 이것은 미래의 방문자에게 중요합니다. –

답변

0

밖으로 나옵니다 잘못된 필드에 & Tbl2이 합류했습니다. MEMBER_CONTR_ID 대신 MEMBER_ACCOUNT_ID의를 했어야 :

SELECT a.SCHOOL_YEAR as Year, a.TOTAL_SERVICE_CREDIT as ServiceCredited, a.RETIREMENT_SALARY as Salary, c.ORG_NAME as CoveredEmployer 
FROM TBL1 a 
INNER JOIN TBL2 b ON a.MEMBER_CONTR_ID = b.MEMBER_CONTR_ID 
INNER JOIN TBL3 c ON b.ORG_ID = c.ORG_ID 
WHERE a.MEMBER_ACCOUNT_ID = 136079 
ORDER BY YEAR DESC; 
관련 문제