Mysql iReport表连接问题并导致重复值

Mysql iReport表连接问题并导致重复值,mysql,jasper-reports,report,reporting,Mysql,Jasper Reports,Report,Reporting,首先,我想说我已经查看、研究并尝试了发布的其他问题,因此可能与我正在讨论的这个问题有关。没有一个有效,也没有一个与此问题相关 我正在编写一份报告,该报告使用SO(salesorder)表和WO(workorder)表中的数据。我显示在照片2场景中。当我只使用零件、说明和数量来运行报告时,报告运行得非常完美:) 问题在于我添加WO表格并添加值WO#和数量。 我知道这一定与表的联接方式或iReport设置的方式有关 为了澄清图片中发生了什么,在表格中,我使用零件表格作为主键,报告应该做的是根据所选零

首先,我想说我已经查看、研究并尝试了发布的其他问题,因此可能与我正在讨论的这个问题有关。没有一个有效,也没有一个与此问题相关

我正在编写一份报告,该报告使用SO(salesorder)表和WO(workorder)表中的数据。我显示在照片2场景中。当我只使用零件、说明和数量来运行报告时,报告运行得非常完美:)

问题在于我添加WO表格并添加值WO#和数量。 我知道这一定与表的联接方式或iReport设置的方式有关

为了澄清图片中发生了什么,在表格中,我使用零件表格作为主键,报告应该做的是根据所选零件向我显示SO和WO中仍然“未完成”的任何零件。因此,So仍然可以有一个未“挑选和包装”的零件,WO也可以有一个未“挑选和包装”的零件,但您可以有一个WO而不是So,反之亦然

问题:如何避免我的WO#和WO Qty值重复出现,并在最后弄乱我的总和?由于这些值是重复的,我的求和函数不断地将它们相加,并给出错误的数字。 谢谢你的帮助


这些是照片。在我添加WO表和值之前,该报告工作正常-如照片所示

现在接下来的4张照片是我添加WO表格时的照片,以及之后的结果



SO和WO之间似乎没有链接,因此将两者放在一行似乎不正确。如果你想在同一份报告中看到这两种类型的订单,那么我建议每一行都有SO或WO的数据。要在同一个报表上获取两种类型的订单,可以使用union分别返回每种订单类型的结果。您需要添加某种类型的“类型”列来显示正在显示的订单类型。下面是一个可以实现这一点的查询。我只列出了对答案至关重要的专栏。希望你会有这个想法。我不确定哪个列适合数量,所以这可能需要更改

SELECT
PART."NUM" AS PART_NUM,
PART."DESCRIPTION" AS PART_DESCRIPTION,
'Sales Order' AS RESULT_TYPE
SO."NUM" ORDER_NUMBER,
SOITEM."QTYTOFULFILL" AS QTY
FROM
"PART" PART
INNER JOIN "PRODUCT" PRODUCT ON PART."ID" = PRODUCT."PARTID" AND PRODUCT."ID" = PART."DEFAULTPRODUCTID"
INNER JOIN "SOITEM" SOITEM ON SOITEM."PRODUCTID" = PRODUCT."ID"
INNER JOIN "SO" SO ON SOITEM."SOID" = SO."ID"
WHERE
PART."NUM" = $P{partNUM}
UNION ALL
SELECT
PART."NUM" AS PART_NUM,
PART."DESCRIPTION" AS PART_DESCRIPTION,
'Work Order' AS RESULT_TYPE,
WO."NUM" AS ORDER_NUMBER,
WOITEM."QTYUSED" AS QTY
FROM
"PART" PART
INNER JOIN "PRODUCT" PRODUCT ON PART."ID" = PRODUCT."PARTID" AND PRODUCT."ID" = PART."DEFAULTPRODUCTID"
INNER JOIN "WOITEM" WOITEM ON PART."ID" = WOITEM."PARTID"
INNER JOIN "WO" WO ON WOITEM."WOID" = WO."ID"
WHERE
PART."NUM" = $P{partNUM}

在我看来,前几天我帮了你一个问题,评判变量的评估时间。。。那一个去哪里了?在我回答之后你删除了吗。。。。如果是这样,我写一个答案是没有意义的。。。因为我所做的努力不仅仅是为了帮助你,而是为了社区。。。。如果你删除了问题和答案。。。好。。我们对社区没有帮助。很抱歉,你把它解读为“咄咄逼人和傲慢”,我会努力改进我的评论。你应该更好地阅读我的评论,我只是简单地说,如果你在别人回答之前就给出了答案(因为在这些标签上,别人回答需要几个小时),如果你自己回答这个问题或者删除这个问题,那就好了,因为回答需要时间和精力,还有评论。。“我已经解决了”,有点烦人。。。你对自己说。。。“那你为什么不回答呢!”你对所有重复的事情分组。。。但是由于SO和WO(其他部分)之间没有关系,所以将它们放在同一行有点奇怪(1 SO与1 WO不相关),似乎它们应该是两个不同的表??如果您希望它们在报表中是两个不同的表,您可以使用相对查询每个表做两个子报表,(在主报告中,使用JREPTYDATASOURCE(1)(或返回1条记录的查询),您也可以使用jr:table组件(但它稍微复杂一点,我会选择子报告,因为您似乎已经熟悉如何使用细节栏)…看到误解如此诚恳地得到解决,这也让人耳目一新!好家伙们。