Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JOIN по NULLable параметру / 10 сообщений из 10, страница 1 из 1
02.04.2013, 16:49
    #38209580
relief
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
Есть параметр@Items
Если он передается, то надо джойн делать по переданным значениям, которые вставляются во временную таблицу
Если он NULL, то не надо джойнить и сделать запрос по всем данным

Как это сделать без 2 запросов с джойном и без? (запросы большие)

автор@Items VARCHAR(MAX) = NULL

CREATE TABLE @tbl

INSERT tbl
SELECT * FROM Items


SELECT * FROM Sales
JOIN ?????
...
Рейтинг: 0 / 0
02.04.2013, 16:53
    #38209589
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
relief, напишите запрос для каждого случая с фильтром по @Items и объедините через UNION ALL
...
Рейтинг: 0 / 0
02.04.2013, 16:53
    #38209596
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
общую большую часть можно вынести в cte
...
Рейтинг: 0 / 0
02.04.2013, 16:57
    #38209612
relief
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
Shakillrelief, напишите запрос для каждого случая с фильтром по @Items и объедините через UNION ALL


этоn SELECT сам идет как вложенный подзапрос и на него вешается джойн снаружи
...
Рейтинг: 0 / 0
02.04.2013, 16:58
    #38209617
Гость333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
Код: sql
1.
WHERE @Items IS NULL OR Item_Id IN (SELECT Item_Id FROM #tmp)
...
Рейтинг: 0 / 0
02.04.2013, 17:00
    #38209625
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
reliefShakillrelief, напишите запрос для каждого случая с фильтром по @Items и объедините через UNION ALL
этоn SELECT сам идет как вложенный подзапрос и на него вешается джойн снаружиа что это меняет?
...
Рейтинг: 0 / 0
02.04.2013, 17:03
    #38209638
relief
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
Гость333
Код: sql
1.
WHERE @Items IS NULL OR Item_Id IN (SELECT Item_Id FROM #tmp)



так работает в 5 раз медленней чем с джойном
...
Рейтинг: 0 / 0
02.04.2013, 17:05
    #38209642
relief
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
Shakillreliefпропущено...

этоn SELECT сам идет как вложенный подзапрос и на него вешается джойн снаружиа что это меняет?

я делаю так

Код: sql
1.
2.
3.
4.
5.
6.
7.
if @items is null
  with cte as (....)
else
  with cte as (....)

select * from sales s 
    join cte  c



так вот cte создать нельзя
...
Рейтинг: 0 / 0
02.04.2013, 17:11
    #38209657
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
relief,

может, так?

Код: sql
1.
2.
3.
4.
5.
6.
WITH cte AS ( ... )
SELECT ... FROM cte 
WHERE @Items IS NULL
UNION ALL
SELECT ... FROM cte JOIN Tbl ON ...
WHERE @Items IS NOT NULL
...
Рейтинг: 0 / 0
02.04.2013, 17:26
    #38209695
relief
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по NULLable параметру
Shakillrelief,

может, так?

Код: sql
1.
2.
3.
4.
5.
6.
WITH cte AS ( ... )
SELECT ... FROM cte 
WHERE @Items IS NULL
UNION ALL
SELECT ... FROM cte JOIN Tbl ON ...
WHERE @Items IS NOT NULL



Сэнкс!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JOIN по NULLable параметру / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]