Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 метод перебора  [new]
Diplomka
Guest
Люди привет!
Люди! Нужна помощь! Голова уже не думает! Нужно зделать перебор целых чисел! Например
123
результат
123
132
213
231
312
321
Но тут ище проблема а если цифр будет не 3 как 123 а 4 и больше?! Пожалуйста помогите!
21 фев 06, 21:25    [2380000]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4255
create table a (id int)

insert into a values(1)
insert into a values(2)
insert into a values(3)

select cast(cast(a.id as varchar(5))+cast(b.id as varchar(5))+cast(c.id as varchar(5)) as int) from a, a b, a c
21 фев 06, 21:45    [2380034]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: метод перебора  [new]
-=Костик=-
Member

Откуда: Энергодар
Сообщений: 84
а если цифры совпадают , то решение не приемлемо
24 дек 09, 19:04    [8115594]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36806
-=Костик=-
а если цифры совпадают , то решение не приемлемо
Думаете, кому-то это почти четыре года спустя интересно?
24 дек 09, 19:05    [8115600]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
-=Костик=-
Member

Откуда: Энергодар
Сообщений: 84
Мне интересно. Столкнулся с похожей задачей
24 дек 09, 19:12    [8115614]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
baike2000
Member

Откуда:
Сообщений: 177
create table a (id int)

insert into a values(1)
insert into a values(2)
insert into a values(2)

select cast(cast(a.id as varchar(5))+cast(b.id as varchar(5))+cast(c.id as varchar(5)) as int) from a, a b, a c
group by cast(cast(a.id as varchar(5))+cast(b.id as varchar(5))+cast(c.id as varchar(5)) as int)
24 дек 09, 19:29    [8115658]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
-=Костик=-
Member

Откуда: Энергодар
Сообщений: 84
Результат Вашего запроса :
121
222
112
211
212
221
111
122

где явно видны ошибки. числа 111 и 222 не должно быть, а также чисел где присутствует две единицы
25 дек 09, 10:09    [8117005]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
-=Костик=-
Member

Откуда: Энергодар
Сообщений: 84
Ожидалось получить:
122
212
221
25 дек 09, 10:10    [8117019]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
А почему это две единицы нельзя, а две двойки - можно?
25 дек 09, 10:13    [8117045]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
Проходимец
Member

Откуда: Москва
Сообщений: 571
Паганель
А почему это две единицы нельзя, а две двойки - можно?

потому что их изначально было две
25 дек 09, 10:15    [8117058]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
тогда это -разные двойки,
и правильным будет следующий результат:
;with cte as (
   select id
         ,row_number() over(order by (select 1)) as rn
     from a
)
select A.id, B.id, C.id
  from cte as A
  join cte as B on B.rn != A.rn
  join cte as C on C.rn != B.rn
               and C.rn != A.rn

id          id          id
----------- ----------- -----------
2           1           2
2           1           2
1           2           2
2           2           1
1           2           2
2           2           1

(6 row(s) affected)
или пусть автор скажет, почему этот результат неправильный
25 дек 09, 10:27    [8117145]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
Проходимец
Member

Откуда: Москва
Сообщений: 571
Паганель
тогда это -разные двойки,
и правильным будет следующий результат:
;with cte as (
   select id
         ,row_number() over(order by (select 1)) as rn
     from a
)
select /*-->>*/ distinct /* <<--*/ A.id, B.id, C.id
  from cte as A
  join cte as B on B.rn != A.rn
  join cte as C on C.rn != B.rn
               and C.rn != A.rn

id          id          id
----------- ----------- -----------
1           2           2
2           1           2
2           2           1

(3 row(s) affected)

Так будет правильнее
25 дек 09, 10:50    [8117322]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
Проходимец
Member

Откуда: Москва
Сообщений: 571
* цифры разные, но числа в переборе одни
25 дек 09, 10:51    [8117328]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Проходимец
цифры разные, но числа в переборе одни
почему это одни, если очень даже не одни
они ведь из разных двоек состоят:
...
select A.rn, B.rn, C.rn
...
25 дек 09, 10:55    [8117355]     Ответить | Цитировать Сообщить модератору
 Re: метод перебора  [new]
Anddros
Member

Откуда:
Сообщений: 1077
-=Костик=-
Мне интересно. Столкнулся с похожей задачей

Вы это читали?

ЗЫ. Большая просьба модераторам ЗАКРЫТЬ ТОПИК.
25 дек 09, 11:43    [8117728]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить