powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / получить в зависимости от входящего количества входящих слов, всевозможные комбинации
11 сообщений из 11, страница 1 из 1
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135641
kolyady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть задачи :
на вход приходит строка я ее розбиваю на пробелам на отдельные слова и необходимо на выходе получить всевозможные комбинации с этими словами (для дальнейшего их сравнения).

Тоесть заходит строка:
'word1 word2 word3'

мне нужно получить :
'word1 word2 word3'
'word1 word3 word2'
'word2 word1 word3'
'word2 word3 word1'
'word3 word2 word1'
'word3 word1 word2'

Так как количество слов в входящей строке не статично, необходим механизм для обработки любого количества слов.
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135647
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolyady
Суть задачи :
на вход приходит строка я ее розбиваю на пробелам на отдельные слова и необходимо на выходе получить всевозможные комбинации с этими словами (для дальнейшего их сравнения).

Тоесть заходит строка:
'word1 word2 word3'

мне нужно получить :
'word1 word2 word3'
'word1 word3 word2'
'word2 word1 word3'
'word2 word3 word1'
'word3 word2 word1'
'word3 word1 word2'

Так как количество слов в входящей строке не статично, необходим механизм для обработки любого количества слов.


Если результат нужен именно в таком виде (переменное количество полей в резалтсете), то это только через динамический запрос.

коль уж появляется динамический запрос, можно нужное количество раз таблицу со словами присоединить саму на себя и динамически нагенерить условия неравенства полей
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135648
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolyady,

такая задача не по "специальности" реляционной СУБД, лучше поискать более подходящее средство для решения.
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135651
kolyady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

тут вопрос не в том чтобы возвращалось количество полей равное количеству слов
1) на вход мы получаем одно поле в котором несколько слов '1 2 3 4'
2) на выходе мы также получаем 1 поле но уже в виде таблицы с разными комбинациями
тоесть:
'1 2 3 4'
'2 3 4 1'
'3 4 2 1' и т.д.
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135652
kolyady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,
ну это уже риторический вопрос где правильно это реализовать, по факту нужно реализовать в ms sql
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135656
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
такая задача не по "специальности" реляционной СУБД, лучше поискать более подходящее средство для решения

Почему ж? Вполне банальный cartesian join в количестве, равном количеству слов, плюс условие, чтобы значения всех полей в каждой записи были уникальными - как-то так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
;with cte(s) as (
  select 'word1'
  union all
  select 'word2'
  union all
  select 'word3'
)
select *
from cte e1, cte e2, cte e3
where e1.s<>e2.s and e1.s<>e3.s and e2.s<>e3.s
order by 1,2,3
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135658
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
Владислав Колосов
такая задача не по "специальности" реляционной СУБД, лучше поискать более подходящее средство для решения

Почему ж? Вполне банальный cartesian join в количестве, равном количеству слов, плюс условие, чтобы значения всех полей в каждой записи были уникальными - как-то так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
;with cte(s) as (
  select 'word1'
  union all
  select 'word2'
  union all
  select 'word3'
)
select *
from cte e1, cte e2, cte e3
where e1.s<>e2.s and e1.s<>e3.s and e2.s<>e3.s
order by 1,2,3


Только количество слов переменное.
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135660
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
Только количество слов переменное.

Генерировать запрос динамически.
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135661
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
msLex
Только количество слов переменное.

Генерировать запрос динамически.

22436957
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135662
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex

А, ну да, оно самое.
...
Рейтинг: 0 / 0
получить в зависимости от входящего количества входящих слов, всевозможные комбинации
    #40135668
kolyady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

спасибо , вроде должно так заработать :)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / получить в зависимости от входящего количества входящих слов, всевозможные комбинации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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