2014-04-08 3 views
0

표 A (CSEReduxResponses)에서 collunm을 업데이트하려고합니다. column은 'AVERAGE'이고 테이블 CSEReduxResponses에 속할 것입니다. 난 내가두 테이블의 평균을 업데이트 하시겠습니까?

<cfif GetTotalStars.RecordCount gt 0> 
     <cfquery datasource="PhoneList" name="GetAllData"> 
      SELECT dept.csedept_id, COUNT(*) as 'totalcount' 
      FROM employee, dept 
      WHERE employee.dept_id = dept.dept_id 
       AND employee.emp_status = 1 
       AND dept.csedept_id is not null 
      GROUP BY dept.csedept_id 
     </cfquery> 

내가 totalstars/TOTALCOUNT 나누는 것 '평균'을 얻을 수있는 총 개수가이 다른 쿼리에서 시작한 총을

<cfquery datasource="Intranet" name="GroupStars"> 
    SELECT execoffice_status, employeedept, COUNT(*) as 'totalstars' 
    FROM CSEReduxResponses 
    WHERE execoffice_status = 1 
    GROUP BY execoffice_status, employeedept 
</cfquery> 

를 얻을 쿼리를 가지고 있고, 그 대답 'AVERAGE'Collumn, 어떻게이 두 테이블에 가입하고 평균을 얻을 수 있습니까?

+1

정규화 된 데이터베이스의 원칙 중 하나는 계산 된 값을 저장하지 않는 것입니다. 귀하의 질문을 보면, 당신은 부서에 CSEReduxResponses를 관련시킬 수있을 것 같지만 그것은 또한 당신이해야 할 것보다 더 많은 행을 업데이 트하는 것 같습니다. 데이터베이스 구조를 다시 한 번 살펴볼 것을 제안합니다. –

답변

0
<cfset avg = GroupStars.totalstars/GetAllData.totalcount> 
<cfquery name="qUpdateAvg" datasource="Intranet"> 
    UPDATE CSEReduxResponses 
    SET AVERAGE = <cfqueryparam value="#avg#" cfsqltype="cf_sql_integer"> 
    WHERE execoffice_status = 1 
</cfquery> 

변경 실제 열 유형에 cfsqltype.

+0

이 오류가 발생합니다. "[Macromedia] [SQLServer JDBC 드라이버] [SQLServer] varchar 값 '0.1'을 데이터 형식 int로 변환 할 때 변환하지 못했습니다.", 수정 방법에 대한 제안 사항이 있습니까? – user3408399

+0

이 답변의 아무 것도 부서를 다루지 않습니다. 질문을 읽는 것은 아마도 방정식의 일부일 것입니다. –

관련 문제