0

企業の検索リストをフィルタリングして、特定のサービスを提供する企業のみを表示するフィールド クラスを使用しています。

使用される 4 つのテーブルは、PURCHVIEW、PCSRVCS、SRVCFETCH、および COMPANIES であり、私が使用している方法は次のとおりです。

void    setRelationship(java.lang.String objectName, java.lang.String whereClause)

そのため、リンクするオブジェクトは 1 つだけに制限されています。COMPANIES を選択したのは、そのテーブルの会社情報をルックアップに表示したいからです。

PURCHVIEW には、PCSRVCS にも含まれる「contractnum」属性があります。

PCRVCS には「contractnum」と「servicesid」があります

最後に、SRVCFETCH には「servicesid」と「company」の 2 つの属性があります。

実行後に接続を作成する方法にかなり迷っています:

"contractnum = (select contractnum FROM PCSRVCS where contractnum = :contractnum"

要約すると、PURCHVIEW の contractnum が与えられた場合、PCSRVCES の contractnum で確認する必要があります --> PCSRVCES の servicesid と SRVCFETCH の serviceid を確認します --> SRVCFETCH にその serviceid を持つ会社を COMPANIES テーブルの情報と照合します.

4

2 に答える 2

1

複数のテーブルを結合するために、すでに開始しているサブクエリ アプローチを使用できます。

このクエリには正しいテーブル名とフィールド名が含まれていない可能性がありますが、質問で提供された情報に基づいて、非常に近いはずです。

contractnum in (
    select contractnum from
            srvcfetch sf
            inner join pcsrvces ps on ps.serviceid = sf.serviceid
            inner join purchview pv on pv.contractnum = ps.contractnum
        where
            pv.contractnum = :contractnum
)
于 2014-05-23T14:31:54.893 に答える
0

4 つのテーブルから必要なデータセットをセットアップ/フィルター処理するために、SQL 管理スタジオでカスタム ビューを作成することで、これを実現できる場合があります。このビューには、必要なフィルタリング基準に基づいた contractnum フィールドのみが含まれます。(つまり、ビュー CustomViewName を select contractnum from table1 join table2 join table3 などとして作成します)。次に、whereclause 条件で行う必要があるのは、contractnum を入力することだけです (CustomViewName から contractnum を選択します)。

于 2014-05-15T18:16:26.613 に答える