SUM

2012-02-08 12 views
1

私は、次の表があります。 資産 - 私たちはお客様のために監視する事を Trouble_tickets - トラブルチケットのインスタンス 部品 - トラブルチケットを固定するために使用することができ、すべての部品 trouble_ticket_parts - ticket_id、part_id、およびqtyが使用されているブリッジテーブル。チケットは多くのパーツを使用できるので、多くのpart_idを持つことができます。次のようにSUM

私のクエリは次のとおりです。チケットは1部Xと、それは私がパートxにのみ興味が2の数量が表示されますyの1部で閉じた場合

select a.name, tt.id, sum(if(trouble_ticket_parts.id = 44, parts.qty,0)) as `qty` 
    from trouble_tickets tt, trouble_ticket_parts ttp, parts p 
    where tt.id = ttp.ticket_id 
    and ttp.parts_id = p.id 
    and a.id = tt.asset_id 
group by a.name asc; 

私の問題があります。ですから問題は、トラブルチケットの在庫全体に渡って部品xの数量をどのように置き換えるかです。

答えて

1
select a.name, tt.id, sum(if(trouble_ticket_parts.id = 44, parts.qty,0)) as `qty`, p.id as partid 
    from trouble_tickets tt, trouble_ticket_parts ttp, parts p 
    where tt.id = ttp.ticket_id 
    and ttp.parts_id = p.id 
    and a.id = tt.asset_id 
group by 
    a.name asc, p.id 
; 

または

select a.name, tt.id, sum(if(trouble_ticket_parts.id = 44, parts.qty,0)) as `qty` 
    from trouble_tickets tt, trouble_ticket_parts ttp, parts p 
    where tt.id = ttp.ticket_id 
    and ttp.parts_id = p.id 
    and a.id = tt.asset_id 
    and p.id = <part-id of x> 
group by a.name asc; 
+0

あなたの最初のクエリは、私がして、グループに一部のIDを追加することを除いてやっているものに同じです。だから私の結果は改善されません。私はこれを理解していません: "とp.id = " 2番目のクエリの一部ですが、もう少し説明できますか? – CodeMonkey

+0

part-idをgroup by文に追加すると、すべての部分ではなく、分割された各部分の合計が出力されます.1つの部分xと1つの部分yで、2行、部分xと1部分、部分yと1個。 2番目の問い合わせは、xのpart-idに ''の代わりにx:の部分の数字だけを入れて、x(1 ) –

+0

私はあなたが2番目のクエリで言及したことをやっている別のバージョンのクエリを持っています。私はまだ同じ結果を得る。 ticket_idはブリッジテーブルに2回あるので、両方をカウントしています。 – CodeMonkey