1
我有以下表格: 资产 - 事情,我们为客户监控 Trouble_tickets - 故障单实例 件 - 可用于修复故障单的所有部件 trouble_ticket_parts - 使用零件的ticket_id,part_id和qty的桥表。票可以有很多部分,所以它可以有很多part_id。SUM在桥上表值
我的查询如下:
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的数量。
你的第一个查询是相同的东西,我与添加部件ID到组由外做。所以它不会改善我的结果。我不明白这一点:“和p.id = <部分id>第二个查询的一部分,你能解释一下吗? – CodeMonkey 2012-02-09 18:46:03
将part-id添加到group by语句将输出每个零件的总和,而不是所有零件的总和 - 因此,使用1部分x和1部分您会得到2条线,其中一条使用x和1部分,另一部分使用部分y和一块。第二个查询是,如果只需要x部分的数字:而不是x的部分id放入x的part-id中,并且只会得到一行,而x(1 ) – 2012-02-10 01:52:48
我有另一个版本的查询,我正在做你在第二个查询中提到的。我仍然得到相同的结果。由于ticket_id在桥表中有两次,因此它们都计数在两个表中。 – CodeMonkey 2012-02-10 19:43:57