私は次のような簡単なクエリを持っています:
SELECT * FROM orders
簡単にすべての注文を返します。
クエリにオプションのパラメータを追加したいと思います。
DECLARE @group INT;
SET @group = 1 --IT1
SELECT * FROM orders WHERE group = isnull(@group, group)
これも問題なく動作します。
私の問題は、次のような2番目のパラメーターが必要なことです。
DECLARE @group INT;
SET @group = 1 --IT1
DECLARE @department VARCHAR(8);
SET @department = 'IT'
SELECT * FROM orders WHERE /*and here add limitation with department*/ group = isnull(@group, group)
注文テーブルにはGROUP列がありますが、DEPARTMENT列はありません。
状況は次のようになります。2つのコンボボックスがあります。1つは部門用、2つ目はグループ用です。最初に私はオプションがあります:
- 全て
- それ
- コールセンター
2番目は、ユーザーがcombo1から何かを選択したときに入力されます。彼がITを選択した場合、グループコンボボックスには次のオプションがあります。
- 全て
- IT1
- IT2
ユーザーが最初のコンボ部門から選択してからグループ化すると、グループのみをチェックするので簡単です。
問題は、彼が部門ITからのすべての注文を希望する場合です。
グループが部門に割り当てられる方法は次のとおりです
- IT-1,2,5
- コールセンター-4,6
- 印刷-3
何か案は?
追加した:
私はそのようなものを作成しました:
DECLARE @group INT;
SET @group = 1 --IT1
DECLARE @department VARCHAR(8);
SET @department = 'IT'
SELECT * FROM orders WHERE
(@department IS NULL OR (@department='IT' AND group IN (1,2,5)) OR (@department='PRINT' AND group =3))
AND
(@group IS NULL OR group = @group)
それが正しいかどうかはわかりません、それはどういうわけかうまくいきます:)