2012-09-18 3 views
1

저는 T-SQL Extrodinare가 아니며, 저는 App Dev 녀석입니다. 그걸로 나는 왜이 숫자가 영원히 계속되는 지 알 수 없다.영원히 투약하십시오.

select p.Code, 
    count(p.Head) as HeadCount, 
     p.Wt 
from Povs p 
left outer join Sales s on SheetKey = p.SheetKey 
left outer join Site [site] on [site].CompanyKey = s.CompanyKey 
left outer join Lot lot on lot.LotID = s.LotID 
group by lot.LotID, [site].SiteKey, Code, Wt 

포브스에는 약 115749000 개의 레코드가 있습니다.

+0

과 다른 테이블에는 몇 개의 ro가 있습니까? 많은 행이 있습니다. 얼마나 많은 시간이 "영원히"입니까? –

+0

영원히 의미 나는이 일을 이미 5 분 동안 실행 한 채 남겨 두었습니다. 그것은 저에게 많은 것처럼 보입니다 ... – PositiveGuy

+0

판매량이 160,000 건, 로트가 3000 건, 사이트가 약 700 건 정도 – PositiveGuy

답변

1

이이 문제를있는 실제 쿼리하지 않는

left outer join Sales s on SheetKey = p.SheetKey 

SheetKey = 그는 판매의 모든 행을 조인 그래서 p.SheetKey 항상 true를 반환하는 것입니다

115,749,000 X 160,000 = 해당 행에 18,519,840,000,000 개의 행이 있습니다.

왜 Lot에 가입 하시겠습니까? 해당 조인을 삭제하고 s.LotID로 그룹화 할 수 있습니다.

동일한 구문을 사용하십시오. 당신이 []에 간다면 일관성을 유지하십시오. 조인을 사용하면 항상 두 부분 이름을 사용합니다. 왜 제비 뽑기에 제비 뽑기가 있냐?

+0

그는 첫 번째 시트 키에서 별칭을 사용하지 않으므로 엔진에서 Saleskey 테이블의 Sheetkey를 사용하지 않습니까? –

+0

@ElVieejo SheetKey Sales에 있었다면 다음 오류 메시지 209, 모호한 열 이름 'SheetID'가 표시됩니다. 직접 시도하십시오. 모든 열 이름은 고유해야합니다. 이름은 하나의 테이블에만있는 경우에만 고유합니다. – Paparazzi

+0

+1, 좋은 캐치! –