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

これは、すべてのアセンブリとそのパーツのリストを取得し、後でツリーを構築するときにフィルター処理できるという意味で機能します。これはまったく問題ありません。合計で 1,000 個のアセンブリがあります。

問題は、WindChill から削除した行も表示されることです (WindChill Web アプリには表示されません)。これはロングショットだと思いますが、参加する必要がある別のテーブルや、潜在的な子パーツを実際に含めるかどうかを取得する必要があるものはありますか?

4

1 に答える 1

4

パーツ マスターではなく、パーツの特定のバージョンを使用する必要があると思います。

BOM とアセンブリが Windchill 内で処理される方法は、関連する部品のスナップショットが部品の各リビジョンで取得されることです。特定のパーツ「バージョン」が参照されていない場合は、「すべて」が取得されます。

私は常に情報エンジンタスクを使用して同じ結果を達成し、データベースとの直接の接触を避けてきたので、それを行うためのSQLがわかりません。オブジェクトを指定すると、関連するすべての子オブジェクトを返す、「Query-Tree」と呼ばれる組み込み Webject があります。したがって、部品の完全な部品表が必要な場合は、Webject を実行してその部品オブジェクトを渡すだけです。

于 2011-04-21T16:52:32.693 に答える