我试图查询WindChill数据库以获取给定部件(装配)的所有子部件。我现在的情况是
-- this is how sql server management studio rewrites an oracle join
SELECT M1.WTPARTNUMBER AS COMPONENT, M2.WTPARTNUMBER AS ASSEMBLY, MAX(WTPARTUSAGELINK.AMOUNTA7) AS AMOUNT
FROM WTPART, WTPARTMASTER M2, WTPARTUSAGELINK, WTPARTMASTER M1
WHERE WTPART.IDA3MASTERREFERENCE = M2.IDA2A2
AND WTPART.IDA2A2 = WTPARTUSAGELINK.IDA3A5
AND WTPARTUSAGELINK.IDA3B5 = M1.IDA2A2
GROUP BY M2.WTPARTNUMBER, M1.WTPARTNUMBER
order by M2.WTPARTNUMBER, M1.WTPARTNUMBER
它的工作原理是,我可以获得每个组件及其部件的列表,稍后在构建树时可以对其进行过滤。这很好,总共有1000个组件。
问题是,我也得到了我从WindChill删除的行(它们不会显示在WindChill Web应用程序中)。我意识到这是一个很长的机会,但是是否需要加入另一个表或其他东西来确定是否实际包含一个潜在的子部分?
2条答案
按热度按时间osh3o9ms1#
我相信你应该使用零件的特定版本,而不是零件母版。
在windchill中处理BOM和组件的方式是,在每次修订零件时都会拍摄相关零件的快照。如果未引用特定部件“version”,则将获得“all”。
我不知道如何使用SQL来实现这一点,因为我一直使用信息引擎任务来实现相同的结果,避免了与数据库的直接接触。有一个内置的webject称为'Query-Tree',给定一个对象,将返回所有相关的子对象。因此,如果我想要一个部件的完整物料清单,我只需运行webject并将该部件对象传递给它。
0vvn1miw2#
在WTPART中添加条件
LATESTITERATIONINFO = 1