1

SQL Server 2005 には、特定の関係に対して追加の条件を指定する必要がある複雑なビューがあります。これらの条件は、ビューの作成時には不明です。これは非常に単純化されたバージョンです。

SELECT fields FROM table1 
LEFT JOIN table2 ON ((table1.pid = table2.fid) AND (table2.condition1 = @runtimecondition));
LEFT JOIN table3 ON ....
LEFT JOIN table4 ON .... 
LEFT JOIN table5 ON ....

テーブルに直接アクセスして結合を行うための動的 SQL は、サードパーティの制約のため、私にとってはオプションではありません (これは統合であり、アクセスを許可するのではなく、コード、できればビューに単一のアクセス ポイントを持たせたいと考えています)。さまざまなテーブルに)。これはビューで行うことができますか? ストアド プロシージャを使用する必要がありますか? これはテーブル値関数で解決できる問題ですか?

4

3 に答える 3

0

これは、関数テーブルよりも効率が悪い可能性があります (しかし、そうなるとは思いません)。

次のように定義されたビュー:

SELECT
    fields
    , table2.fid AS t2fid
    , table2.condition1 AS t2condition1 
FROM table1 
LEFT JOIN table2 ON (table1.pid = table2.fid)
LEFT JOIN table3 ON ....
LEFT JOIN table4 ON .... 
LEFT JOIN table5 ON ....

次のように呼び出されるビュー:

SELECTT
    fields
FROM dbo.MyView
WHERE (
    t2fid IS NULL
    OR
    t2condition1 = @runtimecondition
)
于 2013-05-08T13:44:24.617 に答える