2

我正在尝试查询 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

它的工作原理是我得到了每个程序集及其部件的列表,稍后我可以在构建我的树时对其进行过滤。这很好,总共有 1k 个程序集。

问题是我还得到了从 WindChill 中删除的行(它们未显示在 WindChill Web 应用程序中)。我意识到这是一个很长的镜头,但是我是否需要加入另一个表或其他东西来确定是否实际包含潜在的子部分?

4

1 回答 1

4

我相信您应该使用零件的特定版本,而不是零件大师。

在 Windchill 中处理 BOM 和装配的方式是,在部件的每个修订版本中都拍摄相关部件的快照。如果未引用特定部分的“版本”,那么您将获得“全部”。

我不知道执行此操作的 SQL,因为我一直使用信息引擎任务来实现相同的结果,避免直接接触数据库。有一个名为“Query-Tree”的内置 webject,给定一个对象,它将返回所有相关的子对象。因此,如果我想要零件的完整材料清单,我只需运行 webject 并将该零件对象传递给它。

于 2011-04-21T16:52:32.693 回答