Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выборка по списку товаров  [new]
TheKLF
Member

Откуда:
Сообщений: 22
Здравствуйте!
Есть задача - таблица(перечень различных товаров и магазинов), получить из неё записи значений из перечня.

SQL
SELECT [NAME], [PRICE], [STORE] FROM [dbo].[My_Base] WHERE [NAME] LIKE ' "здесь перечень названий" '


как можно автоматизировать перечисление названий, по которым надо делать выборку?
чтобы не писать много раз:

SQL
..... WHERE [NAME]
LIKE 'item_1'
or LIKE 'item_2'
or LIKE 'item_3'
or LIKE 'item_4'
or LIKE 'item_5'
.......


я бы формировал что-то типа XML или CSV (не важно как именно) список по которым надо делать выгрузку и подгружал его в запрос

Спасибо!
27 фев 19, 17:54    [21820948]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
перечень откуда приходит? IN() есть конструкция, может вам подойдёт
27 фев 19, 17:56    [21820951]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
BredSpit
Member

Откуда:
Сообщений: 19
Ну или JOIN ON LIKE
27 фев 19, 18:01    [21820958]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
TheKLF,

для извлечения данных в табличном виде для типа данных XML можно использовать метод nodes().
27 фев 19, 18:14    [21820970]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
TheKLF
Member

Откуда:
Сообщений: 22
Спасибо за ответы, наверное я не совсем корректно условие описал

Из таблицы надо делать выборку по названиям товаров, которые (если полностью ручками запрос писать) указываются в блоке
автор
LIKE 'item_1' OR LIKE 'item_2' ......


так вот хотелось бы не ручками каждый раз править запрос, а автоматизировать это.

А ещё возможно я сам запрос не правильно делаю, может быть вы меня поправите. Как я уже писал ранее, надо получить список товаров, который допустим получаем в виде xml списка или просто в виде перечисления через запятую от другого отдела и нам надо им вернуть всё имеющиеся запасы из таблицы.
27 фев 19, 21:10    [21821125]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30821
TheKLF
как можно автоматизировать перечисление названий, по которым надо делать выборку?
...
я бы формировал что-то типа XML
Вам ответили:
Владислав Колосов
для извлечения данных в табличном виде для типа данных XML можно использовать метод nodes().
далее, делаете JOIN вашего запроса с этим результатом, полученным методом nodes().
28 фев 19, 09:57    [21821409]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
L_argo
Member

Откуда:
Сообщений: 1140
Кидайте список во времянку, а времянку вставьте в подзапрос
where exists(select * from #xxx where #xxx.name like [...].name)
С времянкой проще работать. Н-р делать ее сложное заполнение, чистку от ненужных данных и т.д.
Она более естественна.
28 фев 19, 10:12    [21821425]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
TheKLF
Member

Откуда:
Сообщений: 22
Большое спасибо за ответы!

Хотел ещё момент уточнить:
когда есть перечень "item_1.....item_10...." и их надо использовать в условии LIKE. Как лучше сделать для скорости выполнения запроса - в одном запросе много LIKE через OR или сделать условно 10 запросов с одним условием LIKE
4 мар 19, 09:26    [21824054]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
TheKLF,

многое зависит от шаблона LIKE. Если этот шаблон не даёт использовать индексы, то, наверно, всё равно.
Иначе надо иметь ввиду, что сервер недолюбливает много OR.
Типичный способ оптимизации - замена на несколько SELECTов в UNION [ALL].
Если этих OR не тысячи, разумеется.
4 мар 19, 12:01    [21824182]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
TheKLF
Member

Откуда:
Сообщений: 22
iap,
спасибо за ответ!

А вариант параметра вида '%item!_1%' ESAPE '!' и остальные такого же вида влияют на скорости выполнения запроса? Когда ищется не по слову целиком, а условие является частью фразы.
4 мар 19, 12:53    [21824251]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по списку товаров  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30821
TheKLF
А вариант параметра вида '%item!_1%' ESAPE '!' и остальные такого же вида влияют на скорости выполнения запроса? Когда ищется не по слову целиком, а условие является частью фразы.
Если по индексу, то быстро, если нет, то медленно, остальное неважно.
Т.е. если 'item!_1%' или 'item!_1', то быстро, остальное медленно.
4 мар 19, 15:06    [21824483]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить