2014-10-21 5 views
0

사용자를 기준으로 행당 합계를 얻는 방법에 대한 도움을 원하십니까? 저는 직원의 근무 시간을 곱하여 프로젝트 비용을 얻고 직원 비율로 계산하려고합니다. 내가 3 개 테이블이 : 직원은, 시간은 프로젝트사용자를 기준으로 행당 합계를 받으십시오.

이 내 표는 직원 테이블

의 모습과 유사합니다

Employee | Hours | Project 
Emp_A  | 18.50 | PRJ.APP 
Emp_A  | 10.00 | PRJ.APP 
Emp_B  | 20.00 | PRJ.APP 
Emp_B  | 5.30 | PRJ.APP 
Emp_C  | 13.00 | PRJ.CAT 
Emp_C  | 8.00 | PRJ.CAT 
: 시간의 테이블

Name | Rate | 
Emp_A | 10.50 | 
Emp_B | 15.00 | 
Emp_C | 25.10 | 

프로젝트 표 :

Prj_Name | Prj_Code | 
Apple  | PRJ.APP  | 
Catalina | PRJ.CAT  | 

이것은 내가 현재 가지고있는 코드, 자사의 단지 합계는 프로젝트 및 사용자에 따라 얻을 수있는 프로젝트 이름 PRJ.APP이 그것,을 선택했을 때 내가 얻을 수 있었으면 된 출력은, 예를 들면

SELECT users.employee, SUM(timesheet.hours * 10.50) 

FROM Projects prj, Hours timesheet, Employee users 

WHERE prj.Prj_Name = 'PRJ.APP' 

해당 프로젝트에서 근무한 직원을 얻고 직원 당 비율이 다르므로 행당이를 계산합니다.

나는

SELECT if(users.employee = 'Emp_A', SUM(timesheet.hours * 10.50), SUM(timesheet.hours)) 

FROM Projects prj, Hours timesheet, Employee users 

WHERE prj.Prj_Name = 'PRJ.APP' 

처럼 뭔가 일을 시도했지만 이것은 단지 Emp_A 및 Emp_B 프로젝트 PRJ.APP에 근무 예제 테이블을 기반으로 Emp_A의 합계를 얻을 것입니다.

PRJ.APP (종업원 A 및 B는 PRJ.APP 근무) 프로젝트

원하는 출력 :

| Emp  | Hours | Hours_Sum | 
| A  | 28.50 | 285   | 
| B  | 25.30 | 379.5  | 

근무 시간 열은 시간 테이블 그리고 Hours_Sum에서 "시간"의 합인 직원의 각 요율을 곱한 시간 열의 합계입니다.

여러분이 저를 도울 수 있기를 바랍니다. 미리 감사드립니다.

+0

명시 적'join' 구문을 사용하는 방법을 배워야합니다. 당신이 데카르트 제품을하고 있기 때문에 쿼리가 작동하지 않습니다. 간단한 규칙 :'from' 절에 쉼표를 사용하지 마십시오. –

답변

1

표시된대로 쿼리를 수정하려면 쿼리에 joingroup by 절을 모두 사용해야합니다. 이 쿼리는 결과를 각 직원의 각 proejct에 소비 된 시간을 기준으로 총 비율로 반환합니다.

select e.name, p.prj_name,SUM(h.hours * e.rate) 
from employee e inner join hours h on (e.name = h.employee) 
inner join projects p on (p.prj_code = h.project) 
group by e.name, p.prj_name 
+0

왜 ON 절에 열고 닫는 괄호를 사용했는지 묻습니다. – hocuspocus31

관련 문제