我有以下表格: 资产 - 我们为客户监控的事项 Trouble_tickets - 故障单的实例 部件 - 可用于修复故障凭单的所有部件 trouble_ticket_parts - 使用了ticket_id,part_id和部分数量的桥接表。票证可以使用许多部分,因此可以有许多part_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
group by a.name asc;
我的问题是,如果一张票以1部分X和1部分y关闭,它将显示2的数量。我只对x部分感兴趣。所以问题是如何在故障单库存中替换部分x的数量。
答案 0 :(得分: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;