2011-08-19 2 views
1

내 DB에서 다음 테이블과 필드가 : 주어진 작업액세스 보고서/SQL DCOUNT 함수

tblProductionRecords: 
pk_fldProductionRecordID, 
fk_fldJobNumber_ID, 
fldPartsCompleted, 

tblJobs: 
pk_fldJobID, 
fldJobNumber 

tblEmployee_ProductionRecord: 
pk_fldEmp_ProdRec, 
fk_fldProdRec_ID, 
fk_fldEmployee_ID, 
fldHours 

tblEmployees: 
pk_fldEmployeeID, 
FldName 

그래서 내가 무엇을 추적하고하는 것은 생산 기록을. 생산 기록 부분은 다음과 같습니다. 부품 수량. 수량 완료와 관련된 직원 (1 명 이상의 직원이 될 수 있으므로 직원과 생산 기록 간의 다 대다 관계) 각 직원이 수량 완료에 소비 한 시간.

내가 직면 한 문제는 보고서에서 내 직업의 총 수량을 추적하는 것입니다. 주어진 생산 기록에 그 수량으로 일한 한 명의 직원이있을 때, 그 수량은 각 직원 기록에 대해 추가됩니다. 그래서 같은 3 명의 직원이 일을하고 그 중 3 명이 1000 개의 파트를 완성했습니다. 내 보고서에는 총 3000 개가 완료된 것으로 표시됩니다.

나는 그룹, 꼬리말, 머리말, 누적 합계 및 백작 (나는 믿는다) 만들기를 이해합니다.

필자가 필요로하는 것은 내 쿼리의 필드로 tblEmployee_ProductionRecord의 레코드 수를 더한 것입니다. 자세한 내용은 fldProdRec_ID = "현재 생산 레코드"를 참조하십시오. 이 번호를 사용하여 총 완료 수량을 3 명 (또는 얼마나 많은 직원)으로 나누고 해당 필드의 합계를 계산할 수 있습니다.

충분히 명확하길 바랍니다. 나는 진실하게 모든 도움을 appriciate! 내가 제대로 이해하면

데이비드

답변

0

, 귀하의 예제 (3 명 직원들이 직장에서 일을하고 각각 1000 개 부품을 만든) 테이블에 다음과 같이 표시됩니다

tblEmployee_ProductionRecord을 :

pk_fldEmp_ProdRec fk_fldProdRec_ID fk_fldEmployee_ID fldHours 
1     1     1     5 
2     2     2     5 
3     3     3     5 

tblProductionRecords :

pk_fldProductionRecordID fk_fldJobNumber_ID fldPartsCompleted 
1       1     1000 
2       1     1000 
3       1     1000 

그렇다면, 다음 쿼리를 시도 :

SELECT 
    tblProductionRecords.fk_fldJobNumber_ID, 
    Count(tblEmployee_ProductionRecord.pk_fldEmp_ProdRec) AS EmployeeCount, 
    Sum(tblProductionRecords.fldPartsCompleted) AS CompletedSum 
FROM 
    tblEmployee_ProductionRecord 
    INNER JOIN tblProductionRecords ON tblEmployee_ProductionRecord.fk_fldProdRec_ID 
       = tblProductionRecords.pk_fldProductionRecordID 
GROUP BY 
    tblProductionRecords.fk_fldJobNumber_ID 
HAVING 
    tblProductionRecords.fk_fldJobNumber_ID=1; 

이것은 다음과 같은 결과를 반환합니다

fk_fldJobNumber_ID EmployeeCount CompletedSum 
1     3    3000 

은 -> 작업 번호 하나, 3 명의 직원은 3000 개 부품의 총을 만들었습니다.

원하는 게 맞습니까?

+0

안녕하세요 기독교 - 귀하의 회신에 감사드립니다. 3 명의 직원이 각각 1000 개의 파트를 작성한 것은 아니지만 3 명의 직원이 3 명 사이에 1000 개의 파트를 작성했습니다. 따라서 tblProductionRecords에는 3000의 PartsCompleted가 있고 tblEmployee_ProductionRecord에는 3 개의 레코드가 있습니다. 3000 개의 파트가있는 하나의 생산 레코드를 가리 킵니다. – user902949

+0

@ user902949 : 무슨 뜻인지 잘 모르겠다. 3 명의 직원이 총 1000 파트 (예 : 300 + 300 + 400)를 만든 경우 tblProductionRecords의 레코드는 PartsCompleted = 3000이됩니까? 1000 (직원이 만든 부품의 총 수)이 될 것으로 예상했을 것입니다. 이 점을 명확히 할 수 있습니까 (아니면 더 나은 질문을 편집하고 표에 대한 샘플 데이터를 제공 할 수 있습니까)? –

관련 문제