を返す:ストアドプロシージャこのストアドプロシージャは、構造化される方法である立方体の結果
[dbo].[getSp] (
@Color varchar(10) = Null,
@Finish varchar(10) = Null,
@Height varchar(10) = Null,
@Type varchar(10) = Null,
@Trim varchar(10) = Null,
@Width varchar(10) = Null
)
これはsearched..Thisデータが不完全である前に、データがどのように見えるかですが、に一例として、アイデアを得る。
SELECT * FROM TABLE WHERE Type = @Type And
(
..... Confused about this part,
)
しかし、基本的に、私が実行したいと思います:それは次のようになりますので、すべての組み合わせがここにあるであろう。..
Color | Finish | Height | Type | Trim | Width |
Blue | Shiny | Tall | Toaster | Normal | 3.5 |
(NULL) | (NULL) | (NULL) | Toaster | (NULL) | 3.5 |
(NULL) | (NULL) | Tall | Toaster | Deco | 4 |
(NULL) | Shiny | Tall | Toaster | Deco | 4 |
Blue | Shiny | (NULL) | Toaster | Deco | 4 |
(NULL) | Shiny | Tall | Toaster | Deco | 4 |
(NULL) | Satin | Tall | Toaster | Deco | 4 |
Red | (NULL) | Tall | Toaster | Deco | 4 |
SELECT文は、プライマリ検索フィールドとしてType
を持っているでしょうストアドプロシージャは、このようなparamsは一部のみで呼び出されたときにテーブルに行であるそれらの組合せを含むように:
[getSp]
@Color='Blue',
@Finish='Shiny',
@Type='toaster'
アンD SPは最終的にこの(すべての組み合わせ)を返します。..
1. Blue Shiny Tall Toaster
2. Blue Shiny Toaster
3. Blue Tall Toaster
4. Blue Toaster
5. Tall Toaster
6. Shiny Toaster
7. Shiny Tall Toaster
だから私はあなたがストアドプロシージャのparamsに含まれているもののみのためのすべての組み合わせを返すために、ストアドプロシージャにWhere
ステートメントを構築する方法について混乱しています残りのパラメータ(Width
とTrim
など)は、デフォルトでNULL
として渡され、検索結果から除外されます。
SELECT * FROM TABLE WHERE
Type = @Type AND
(
(Color = @Color OR COALESCE(@Color,COLOR) IS NULL) OR...
... for each other param
)
私は運なしでこれを試してみた
SELECT * FROM TABLE WHERE
Type = @Type AND
(
COLOR = COALESCE(@Color,COLOR) AND...
... for each other param
)
私は運なしでこれを試してみた
... ...が、また失敗しました。どんな提案も役に立ちます。あなたは、その後のparamを提供する場合
は私が探している結果を返しません...実際にそれだけを返します#1のような行は、他のすべてのレベルは返されません。 –
ANDをORに変更します。 –
これは多すぎる結果を返します。 –