2017-10-16 9 views
1

노동, 장비 및 자재에 대한 3 개의 관련 테이블이있는 작업 지시 테이블이 있습니다. WorkOrderID로 3 개 항목 및 그룹의 비용을 합산하려고합니다. 직선 조인이 모든 결과를 곱하여 하위 쿼리를 사용해야한다는 것을 알고 있지만 하위 쿼리를 작성하는 방법을 파악할 수는 없습니다.3 개의 관련 테이블에서 부모 테이블까지 총 합계 -

다음은 깨진 바로 가입 쿼리입니다. 난 몇 가지 하위 쿼리를 시도하고 곱한 결과를 계속. 어떤 도움이라도 대단히 감사합니다. 고맙습니다.

select wo.workorderid, sum(lab.cost) as labcost, sum(mat.cost) as matCost, sum(eq.cost) as eqcost 
from WORKORDER as wo 
    join LABORCOSTACT as lab 
on lab.WORKORDERID = wo.WORKORDERID 
    join MATERIALCOSTACT as mat 
on mat.WORKORDERID = wo.WORKORDERID 
    join EQUIPMENTCOSTACT as eq 
on eq.WORKORDERID = wo.WORKORDERID 
where lab.TASKNAME like 'tree_rmvl' 
group by wo.WORKORDERID 
order by wo.WORKORDERID 
+0

가입 가능 중복 당신이 키에 의해 각 테이블 그룹에서 aggreated 결과에 가입 할 수 피하려면? SQL은 특정 데이터베이스 제품의 이름이 아닌 쿼리 언어 일뿐입니다. –

+2

샘플 데이터. 원하는 결과. –

답변

0

사용중인 DBMS 기본 테이블

select wo.workorderid, lab.tot_lab_cost as labcost, mat.tot_mat_cost as matCost, eq.tot_eq_cost) as eqcost 
from WORKORDER as wo 
    inner join ( 
     select WORKORDERID , sum(cost) tot_lab_cost 
     from LABORCOSTACT 
     group by WORKORDERID 
    ) lab on lab.WORKORDERID = wo.WORKORDERID 
    inner join (
     select WORKORDERID , sum(cost) tot_mat_cost 
     from MATERIALCOSTACT 
     group by WORKORDERID 
    ) mat on mat.WORKORDERID = wo.WORKORDERID 
    inner join (
     select WORKORDERID , sum(cost) tot_eq_cost 
     from EQUIPMENTCOSTACT 
     group by WORKORDERID 
    ) eq on eq.WORKORDERID = wo.WORKORDERID 
where lab.TASKNAME like 'tree_rmvl' 
order by wo.WORKORDERID