ストアドプロシージャは次のように構成されます。
[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
)
これは、検索前のデータの外観です。このデータは不完全ですが、アイデアを得るための例です。すべての組み合わせがここにあります。
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
プライマリルックアップフィールドとして持つため、次のようになります。
SELECT * FROM TABLE WHERE Type = @Type And
(
..... Confused about this part,
)
ただし、基本的には、次のように、パラメータの一部のみを使用して呼び出されたときにテーブルに表示される行である組み合わせのみを含めるようにストアドプロシージャを実行したいと思います。
[getSp]
@Color='Blue',
@Finish='Shiny',
@Type='toaster'
そして、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
Where
そのため、ストアドプロシージャ内のステートメントを構造化して、ストアドプロシージャのパラメータに含まれているものだけのすべての組み合わせを返す方法について混乱していますが、残りのパラメータ(結果や検索から除外されるなど)はWidth
、Trim
いつデフォルトで渡さNULL
れます。
私は運がなくてこれを試しました...
SELECT * FROM TABLE WHERE
Type = @Type AND
(
COLOR = COALESCE(@Color,COLOR) AND...
... for each other param
)
私は運がなくてこれを試しました...
SELECT * FROM TABLE WHERE
Type = @Type AND
(
(Color = @Color OR COALESCE(@Color,COLOR) IS NULL) OR...
... for each other param
)
sqlステートメントを作成しようとしましたが、失敗しました。提案があれば役に立ちます。