2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Выборка комбинаций из табл согласно значениям из другой табл
Сообщение13.06.2020, 12:38 
Аватара пользователя


04/02/12
305
Ростов-на-Дону
Добрый день!

Подскажите, как выбрать из таблицы SQL формата:

Названия | поле
схема | 1
плата | 2
плата | 1
плата | 3
плата | 4
разъём| 1
разъём| 3

все возможные комбинации Названий, которые содержат полностью значения таблицы SQL:
| поле
| 1
| 3
| 2
| 4

Итог нужен такой:

1. схема | 1
плата | 2
плата | 3
плата | 4

2. плата | 2
плата | 4
разъём| 1
разъём| 3

3. плата | 2
плата | 1
плата | 4
разъём| 3

4. плата | 2
плата | 3
плата | 4
разъём| 1

 Профиль  
                  
 
 Posted automatically
Сообщение13.06.2020, 12:45 
Супермодератор
Аватара пользователя


09/05/12
24061
Кронштадт
 i  Тема перемещена из форума «Компьютерные сети и Web-технологии» в форум «Карантин»
по следующим причинам:

- формулировка вопроса пока что такая, что понять его весьма трудно.

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Профиль  
                  
 
 Posted automatically
Сообщение13.06.2020, 13:13 
Супермодератор
Аватара пользователя


09/05/12
24061
Кронштадт
 i  Тема перемещена из форума «Карантин» в форум «Программирование»

 Профиль  
                  
 
 Re: Выборка комбинаций из табл согласно значениям из другой табл
Сообщение26.07.2020, 04:29 
Аватара пользователя


25/07/20
19
samson4747 всё-таки не совсем понятно что Вы ищете - к примеру почему в Вашем списке решений нет варианта
Схема | 1
Плата | 2
Плата | 4
Разъём | 3

и какой именно диалект SQL Вы планируете использовать ? У меня есть ощущение что задачу проще решить не средствами SQL а сформировав массивы возможных Названий для каждого из значений "поля" и потом построив их перемножение ... можно конечно это и в один оператор всё уложить (наверное) но будет некрасиво.

А так если в лоб решать - Первый шаг - получаем стартовый массив ( что-то из серии select distinct поле from table в список ) ... второй шаг - набираем значения через курсор ( из серии select distinct поле Название from table в курсор .... add курсор-название к структуре список где список-поле = поле ) ... ну и третий шаг бегом по списку сверху вниз с права на лево формируя таблицу результата ( все элементы списка последнего значения с первыми элементами всех предыдущих ... потом с первым(n-1 раз)-вторым и так далеее ( вложенные циклы проще всего это реализуют по-моему ). Теоретически последняя операция является полным аналогом внешнего джойна для N таблиц .. но в памяти быстрее наверное будет )

 Профиль  
                  
 
 Re: Выборка комбинаций из табл согласно значениям из другой табл
Сообщение26.07.2020, 15:11 
Заслуженный участник


06/07/11
5615
кран.набрать.грамота
Zul в сообщении #1476004 писал(а):
всё-таки не совсем понятно что Вы ищете - к примеру почему в Вашем списке решений нет варианта
Вы, скорее всего, зря тратите время. ТС написал 6 сообщений в 2015-м году, потом на пять лет пропал, создал этот топик и пропал опять.

Zul в сообщении #1476004 писал(а):
и какой именно диалект SQL Вы планируете использовать ? У меня есть ощущение что задачу проще решить не средствами SQL
Я тоже ничего не понял в постановке задачи, но если сыграть в игру "угадай, в чем могла бы заключаться задача", то я бы предположил, что подойдет любой диалект, в котором есть recursive CTE (это который with recursive as (select ...)) - там все возможные комбинации должны находиться довольно просто.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group