2011-02-09 9 views
2

WindChillデータベースを照会して、特定の部品(アセンブリ)のすべての子部品を取得しようとしています。私が今持っていることはこれです:PTC 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アプリケーションには表示されません)が表示されることです。私はこれが長い間起こっていることを認識していますが、参加する必要のある別のテーブルや、潜在的な子供の部分を実際に入れるかどうかを知るためのものがありますか?

+0

私はWindChillの経験がありませんでしたが、これらのテーブルには、削除された列が削除されたときにYe​​s(または状態がDeletedなどに設定されている)に設定されているように見えます。ウェブアプリ(実際にデータを削除するのではなく)そのような場合は、deleted = 'Yes'条件(またはそれが何であるかは問わない)をクエリに追加するだけです。 – Craig

+0

実際にはそうですが、間違った行についてもfalseに設定されています。 – Blindy

答えて

4

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

windchill内でBOMとアセンブリを処理する方法は、部品の各リビジョンで関連部品のスナップショットを取ることです。特定の部分 'version'が参照されていない場合は、 'all'を取得します。

私はSQLを知らないので、私はいつもdbとの直接の接触を避けて同じ結果を達成するためにインフォエンジンタスクを使用してきました。 'Query-Tree'という名前のビルトインのWebオブジェクトがあります。このオブジェクトは、オブジェクトを指定すると、関連するすべての子オブジェクトを返します。ですから、私が部品表の部品表を全部必要としたら、私はwebjectを実行し、その部品オブジェクトを渡します。

関連する問題