powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JOIN по NULLable параметру
10 сообщений из 10, страница 1 из 1
JOIN по NULLable параметру
    #38209580
relief
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть параметр@Items
Если он передается, то надо джойн делать по переданным значениям, которые вставляются во временную таблицу
Если он NULL, то не надо джойнить и сделать запрос по всем данным

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

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

CREATE TABLE @tbl

INSERT tbl
SELECT * FROM Items


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


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



так работает в 5 раз медленней чем с джойном
...
Рейтинг: 0 / 0
JOIN по NULLable параметру
    #38209642
relief
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
JOIN по NULLable параметру
    #38209657
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
JOIN по NULLable параметру
    #38209695
relief
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JOIN по NULLable параметру
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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