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
이것은 처음으로 데카르트 조인을 다루는 것입니다. 누구든지 내 쿼리에서이 문제를 해결할 수있는 방법을 알고 있습니까?
그래서 각'tbl2' 레코드의 각'tbl1' 레코드에 대한 여러'tbl2' 기록, 및/또는 복수의'tbl3' 레코드가? 최종 결과 중 하나에 대한 원시 데이터의 샘플이 도움이 될 수 있습니다. 그래도 그룹화하지 않거나 쿼리에 집계되지 않는 이유는 무엇입니까? –
Alex에게 답장을 보내 주셔서 감사합니다. 나는 그 문제를 알아내는 것을 끝내었다. 나는 Tbl2 & Tbl3에 대해'JOIN'을 맞았지만, Tbl1 & Tbl2에 대해서는 Join에 잘못된 Key 값을 사용하고있었습니다. 나는 몇 가지 다른 수정을했다. 그것은 내 문제의 근원이었다. –
@AnalyticLunatic 문제를 직접 해결해 주신 것을 축하드립니다. 이 질문이 "답변 됨"으로 나타날 수 있도록 솔루션을 게시하고 스스로 수락 해주십시오. 이것은 미래의 방문자에게 중요합니다. –