2017-04-05 1 views
-2

1)SQL Serverではプロシージャを保存しており、複数のテーブルとの結合があります。 2)そこにUserMaster、RoleMaster、UserTypeテーブルがあります 3)Role MasterにはRoleX、RoleY、RoleZというロールがあります 4)ユーザータイプmasterではRoleZのみのType1とType2のようなユーザータイプ値があります要件ごと) 5)次に、ユーザテーブルにIは、ユーザのn個を有し、これらは上記の役割のいずれかと関連しているとだけRoleZため、それらがユーザタイプSQLストアドプロシージャ、where句を適用する

問題のどれかに関連付けられてもよい。 今GUIで私はロールとユーザーの種類のユーザーフィルタを取得し、彼らはRoleZのフィルタを適用する場合のみ、彼らはユーザータイプのフィルタを与えるだろう、彼らはどのように私はフェッチするためのクエリを書くことができるフィルタの複数の役割を送信しますこのシナリオのレコード

すぐに助けてください。

+1

を開始し始めるには絶好の場所です得ることができます。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

答えて

0

パラメータ(フィルタ条件)は変数でなければならず、動的クエリの使用が役立ちます。

下記の1つのパラメータ(フィルタ条件)について例を示します。

(@ PARAM1がnullでない)場合 その後、 宣言@varのvarchar型(max)を開始= 'テーブル名から選択*どこColumnNameに=' + @のparam1 のexec(@var) 終了

場合(@ param1はnullではなく、@ param2はnullではありません) then begin declare @var varchar(max)= 'tablenameからcolumnname1 =' + @ param1 + 'およびcolumnname2 =' + @ param2を指定します。 exec @var) end

必要なキャストは要件に基づいて行う必要があり、パラメータに応じて@var変数の割り当てを動的に変更する必要があります。

+0

返信いただきありがとうございます。私の場合は、送信するフィルタ値になりますリストに複数の役割がある場合、両方の役割に基づいてフィルタリングする必要があります。 – muthu

+0

@rolelist = '1,3' @ Userfilter = '1' 私はこのvalusを分割して適用することができますここにwhere句の ここではrole3のみがusertypeを持っていますが、ロール1のユーザーリストを返すだけでなく、ユーザータイプ1のロール3のユーザーをリストアする必要があります。 これは何らかの最適化クエリ.... 詳細を表示するために進む – muthu

+0

OKカンマ区切りの値を分割する機能があります。私はあなたのコメントの2番目の部分で明確ではない。これはパラメータ(フィルタ条件)の使用を参照していますか? – Coder1991