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

Откуда:
Сообщений: 30
В БД нужны данные из столбца RecipeID, но брать их нужно именно из строк при сравнение со столбцами Serial и Number (два разных столбца)
declare @t table(id varchar(max))
insert into @t(id)
values (дальше идут все нужные значения Серии и номера, но уже в одном столбце)
подскажите как это организовать
SQL server 12
16 сен 16, 13:34    [19673388]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
fRosSty,

SELECT CONCAT(Serial ,Number )
16 сен 16, 14:01    [19673566]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
fRosSty
Member

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

таким образом я просто склею Столбцы Serial и Number, а как их сравнить с теми данными что я имею и при этом из полученных строк, вытащить RecipeID для каждой строки?
16 сен 16, 14:05    [19673613]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
fRosSty
Member

Откуда:
Сообщений: 30
есть хранимая процедура, которая апдейтит данную таблицу, и она принимает значение двух переменных, первая это id пользователя, она постоянна. Вторая id рецепта. Вот мне нужно в эту процедуру подать 600 значений RecipeID, при этом зная только Serial и Number рецепта
16 сен 16, 14:06    [19673617]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
fRosSty,

вроде и язык тот, а понять не могу
SELECT RecipeID FROM T WHERE Serial = @Serial  AND Number = @Number 
16 сен 16, 14:09    [19673640]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
fRosSty
Member

Откуда:
Сообщений: 30
имеется таблица с >40000 рецептами, в которых важны три столбца RecipeID, Serial и Number, серия или номер у рецептов может повторяться, но их сочетание уникально как и RecipeID.
мне нужно проапдейтить 600 таких рецептов имея при этом хранимую процедуру
exec spx_ValidateRecipe @userid='B820E301-0FA8-48C6-95C5-98316DA8A5E8',@recipeID='FFAB1AAB-E9CA-4466-9899-1225A100C29C'
подавать параметр @recipeID 600 разных значений не целесообразно. Есть список Серии и Номеров в виде ('731673 10200') - таких 600 штук.
declare @t table(id varchar(max))
insert into @t(id)
values - я пробую создать переменную типа Table, которая содержит в себе 600 этих сочетаний Серии и номера.
вот и вопрос как эту переменную сравнить с двумя столбцами таблицы, зафиксировать RecipeID получившихся строк и занести их в хранимую процедуру вместо @recipeID
16 сен 16, 14:26    [19673727]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
fRosSty,

а как вы свою таблицу будете передавать в процедуру? тип создадите?
16 сен 16, 14:29    [19673743]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
или вы прям в текущую процедуру будете переменную @t передавать, тока теперь таблицей :)
16 сен 16, 14:30    [19673748]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
aleks2
Guest
TaPaK
fRosSty,

а как вы свою таблицу будете передавать в процедуру? тип создадите?


Разговор глухого со слепым.

ЗЫ. Тредстартер JOIN не разумеет.
16 сен 16, 14:33    [19673770]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
aleks2
TaPaK
fRosSty,

а как вы свою таблицу будете передавать в процедуру? тип создадите?


Разговор глухого со слепым.

ЗЫ. Тредстартер JOIN не разумеет.

exec spx_ValidateRecipe @userid='B820E301-0FA8-48C6-95C5-98316DA8A5E8',@recipeID='FFAB1AAB-E9CA-4466-9899-1225A100C29C'
подавать параметр @recipeID 600 разных значений не целесообразно. 
чаво джоинить барин будет
16 сен 16, 14:34    [19673775]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
aleks2
Guest
fRosSty
я пробую создать переменную типа Table, которая содержит в себе 600 этих сочетаний Серии и номера.
вот и вопрос как эту переменную сравнить с двумя столбцами таблицы, зафиксировать RecipeID получившихся строк и занести их в хранимую процедуру вместо @recipeID


Чти неразумный.
16 сен 16, 14:36    [19673793]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
aleks2
fRosSty
я пробую создать переменную типа Table, которая содержит в себе 600 этих сочетаний Серии и номера.
вот и вопрос как эту переменную сравнить с двумя столбцами таблицы, зафиксировать RecipeID получившихся строк и занести их в хранимую процедуру вместо @recipeID


Чти неразумный.

зафиксировать RecipeID получившихся строк и занести их в хранимую процедуру вместо @recipeID
16 сен 16, 14:37    [19673800]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
fRosSty
Member

Откуда:
Сообщений: 30
TaPaK,
ну это решил, что так будет правельно. могу и ошибаться
в @t содержаться Serial и Number через пробел, она для сравнения
а в процедуру подавать, нужна наверное новая переменная
16 сен 16, 14:37    [19673801]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
fRosSty
TaPaK,
ну это решил, что так будет правельно. могу и ошибаться
в @t содержаться Serial и Number через пробел, она для сравнения
а в процедуру подавать, нужна наверное новая переменная

SELECT 
T.RecipeID
FROM T
JOIN S
ON
 S.Value = CONCAT(T.Serial ,' ', T.Number )
GROUP BY 
 T.RecipeID

а вторую проблему уж думайте как вам надо :)
16 сен 16, 14:40    [19673827]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
fRosSty
Member

Откуда:
Сообщений: 30
TaPaK,
таким образом я соберу все >40000 рецептов, как это все сравнить с @t?
16 сен 16, 14:44    [19673857]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
fRosSty
TaPaK,
таким образом я соберу все >40000 рецептов, как это все сравнить с @t?

может вам не стоит этого делать?
16 сен 16, 14:46    [19673870]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
fRosSty
Member

Откуда:
Сообщений: 30
TaPaK,
без этого я не найду те самые, нужные рецепты из 40000
16 сен 16, 14:51    [19673903]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
fRosSty
TaPaK,
без этого я не найду те самые, нужные рецепты из 40000

не, я имел ввиду попросите кого-то другого
16 сен 16, 14:52    [19673911]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
4iv
Member

Откуда: Ярославль
Сообщений: 16
Выше Вам дали правильный запрос для получения RecipeID по "склейке".
Вам осталось сделать:
1) Слинковать этот запрос со своей таблицей, чтобы только для отобранных 600 рецептов найти ID.
2) Из получившегося запроса сделать курсор и для каждой строки результата вызвать Вашу SP.
3) Результаты SP можно инсертить в результирующую таблицу.

Увы, мне не известны методы линковки c SP, поэтому и предложил курсор.
16 сен 16, 15:08    [19674035]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
fRosSty
Member

Откуда:
Сообщений: 30
4iv,
Declare @t table(id varchar(max))
insert into @t(id)
values
...
SELECT
RecipeID
FROM T_RECIPE
JOIN @t
ON
@t = CONCAT(T_RECIPE.Serial ,' ', T_RECIPE.Number ) <--Необходимо объявить скалярную переменную "@t".
GROUP BY
RecipeID

что я делаю не так?
16 сен 16, 15:15    [19674082]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37228
SELECT 
RecipeID
FROM T_RECIPE 
JOIN @t a
ON
 a.id = CONCAT(T_RECIPE.Serial ,' ', T_RECIPE.Number )   <--Необходимо объявить скалярную переменную "@t".
GROUP BY 
 RecipeID
16 сен 16, 15:18    [19674093]     Ответить | Цитировать Сообщить модератору
 Re: как вытащить из таблицы значение, после сравнения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Гавриленко Сергей Алексеевич,

а я как сказал :)

@t = CONCAT(T_RECIPE.Serial ,' ', T_RECIPE.Number ) <--Необходимо объявить скалярную переменную "@t".

тут без вариантов ALT + F4

по сабжу пихайте запрос Гавриленко Сергей Алексеевич в курсор и долбайте процедуру, хотя это плохо вяжется с желанием
автор
подавать параметр @recipeID 600 разных значений не целесообразно

тогда создавайте новый тип или меняйте логику процедуры или к пункту ALT + F4
16 сен 16, 15:21    [19674115]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить