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

Откуда:
Сообщений: 29
Добрый день!
Вот при таком куске кода
SELECT ...
and medecins.medecins_id IN (19,20,21,22,44,77,96,111,143,99)

OPEN let
FETCH NEXT FROM let INTO @let_id...
WHILE @@FETCH_STATUS=0
BEGIN...

если беру IN (...), то результат выводиться неверный, надо чтобы было так.
Сначала берем 19, потом пробегаем циклом, потом берем след. цифру, опять пробегаем циклом и т.д. пока не достигнем конца, т.е. 99.
28 июн 11, 17:29    [10888356]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
LAKERS824
Member

Откуда:
Сообщений: 29
при этом группировку использовать нельзя
28 июн 11, 17:30    [10888365]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
Glory
Member

Откуда:
Сообщений: 104751
LAKERS824
если беру IN (...), то результат выводиться неверный, надо чтобы было так.
Сначала берем 19, потом пробегаем циклом, потом берем след. цифру, опять пробегаем циклом и т.д. пока не достигнем конца, т.е. 99.

Т.е. нужно
- угадать какой результат является верным для вас
- и предложить решение по его получению ?
28 июн 11, 17:31    [10888370]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
LAKERS824, можно сделать два цикла (и два курсора, соответственно) - один внутри другого. внешний будет по вашим числам 19..99, а по let_Id будет внутренним
28 июн 11, 17:55    [10888577]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Shakill,

а order by использовать уже не кошено ?
28 июн 11, 18:01    [10888628]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Ken@t, да тогда можно и одним циклом обойтись. :) но пусть ТС поточнее обозначит результат
28 июн 11, 18:21    [10888728]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Ken@t
Shakill,

а order by использовать уже не кошено ?


У него IN (19,20,21,22,44,77,96,111,143,99)
Внимательнее, числа не по порядку.

Как вариант - создать табличку или табличную переменную, связать с курсором, запхнуть туда нужный порядок цифр, сортировать по ID этой таблички.
А по другому - как бы и не подсказать SQL-ю, в каком порядке ковырять строки...
28 июн 11, 21:22    [10889310]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
iap
Member

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

в двух словах. Курсор-то зачем?
28 июн 11, 21:25    [10889321]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
iap,

Очевидно, внутри курсора он-таки что-то делает. :)
Вопрос был не про курсор, а как скормить курсору записи в нужном порядке.

повторюсь...
Примерно так:

declare @tmp as table (id int not null, medecins_id int not null)

insert into @tmp(id, medecins_id) select 1, 19
union all select 2, 20
....
union all select 10, 99

SELECT ...
and medecins.medecins_id = @tmp.medecins_id
ORDER BY @tmp.id
28 июн 11, 21:32    [10889347]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
iap
Member

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

я же задал вопрос не о гостайне.
Почему бы не удовлетворить моё любопытство в двух словах?
Зачем вообще нужны курсоры и что с ними делать, я знаю. Спасибо.
28 июн 11, 21:37    [10889362]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
iap,

Не хотел наехать, сорри, просто недопонял вопроса.


BTW, Glory, господин Гавриленко?
Я сейчас решение привел - первое, которое в голову влетело...
Может, есть что-то поизящнее?
С удовольствием бы посмотрел.
28 июн 11, 21:46    [10889396]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Makar4ik
Я сейчас решение привел - первое, которое в голову влетело...
Два раза топик перечитал, но так и не понял, решение чего вы таки привели.

З.Ы. Ну и за порядок в скуле order by всю жизнь отвечал. Раз он у вас есть - значит есть шанс, что взлетит.
28 июн 11, 22:29    [10889573]     Ответить | Цитировать Сообщить модератору
 Re: как правильнее?  [new]
LAKERS824
Member

Откуда:
Сообщений: 29
Makar4ik
iap,

Примерно так:

declare @tmp as table (id int not null, medecins_id int not null)

insert into @tmp(id, medecins_id) select 1, 19
union all select 2, 20
....
union all select 10, 99

SELECT ...
and medecins.medecins_id = @tmp.medecins_id
ORDER BY @tmp.id


спасибо, примерно это помогло, даже без сортировки
29 июн 11, 10:42    [10891058]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить