Это, как будет структурирована хранимая процедура:хранимой процедуры с параметром по умолчанию NULL для возврата результатов
[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 является неполным, но как пример получить представление. Каждая комбинация будет здесь ..
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,
)
Но в принципе, я хотел бы работать хранимые процедуры, чтобы включать в себя только те комбинации, которые являются строки, найденные в таблице, когда вызывается только с частью Params, как это:
[getSp]
@Color='Blue',
@Finish='Shiny',
@Type='toaster'
d СП будет в конечном итоге вернуть это (все комбинации) ..
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
заявления в хранимой процедуре возвращать все комбинации только те, которые вы включаете в хранимых процедурах Params , но оставшиеся параметры (например, 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, но тоже не удалось. Любые предложения были бы полезными.
Не возвращает результаты я ищу .. На самом деле это только возвращается строки, подобные # 1, все остальные уровни не возвращаются. –
Измените AND на OR. –
Это возвращает слишком много разных результатов. –