2017-10-16 34 views
1

労働、設備、および材料に関する3つの関連テーブルを持つ作業オーダーテーブルがあります。私は3つのアイテムとグループのコストをWorkOrderIDで合計しようとしています。私はストレート結合が結果のすべてを掛けるのでサブクエリを使用する必要があることを知っていますが、どのようにサブクエリを書くのか分かりません。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 
関連する問題