Как создать алгоритм или формулу для получения комбинаций? - PullRequest
1 голос
/ 11 июня 2011

Я хочу создать алгоритм или формулу, которая дает мне следующие комбинации ниже.Я вручную распечатал все комбинации для примера, содержащего 4 таблицы с соответствующими значениями.

Это не перестановка, потому что мне нужны комбинации, чтобы всегда следовать уникальному формату

Table1, Table2, Table3, Table4 значения

Так как можноя достигаю этого в сценарии SQL или с помощью кода C # (код VB.Net также может работать)

Примечание: решение содержит все возможные 48 комбинаций, которые мне нужны для моей проблемы.

Задача

Таблица1 Таблица2 Таблица3 Таблица4
a1 b1 c1 d1
a2 b2 c2 d2
a3 c3
c4

Решение

a1, b1, c1, d1
a1, b1, c1, d2
a1, b1, c2, d1
a1, b1, c2, d2
a1, b1, c3, d1
a1, b1, c3, d2
a1, b1, c4, d1
a1, b1, c4, d2

a1, b2, c1, d1
a1, b2, c1, d2
a1, b2, c2, d1
a1, b2, c2, d2
a1, b2, c3, d1
a1, b2, c3, d2
a1, b2, c4, d1
a1, b2, c4, d2

a2, b1, c1, d1
a2, b1, c1, d2
a2, b1, c2, d1
a2, b1, c2, d2
a2, b1, c3, d1
a2, b1, c3, d2
a2, b1, c4, d1
a2, b1, c4, д2

а2,b2, c1, d1
a2, b2, c1, d2
a2, b2, c2, d1
a2, b2, c2, d2
a2, b2, c3, d1
a2,b2, c3, d2
a2, b2, c4, d1
a2, b2, c4, d2

a3, b1, c1, d1
a3, b1, c1, d2
a3, b1, c2, d1
a3, b1, c2, d2
a3, b1, c3, d1
a3, b1, c3, d2
a3, b1, c4, d1
a3, b1, c4, d2

a3, b2, c1, d1
a3, b2, c1, d2
a3, b2, c2, d1
a3, b2, c2,d2
a3, b2, c3, d1
a3, b2, c3, d2
a3, b2, c4, d1
a3, b2, c4, d2

Ответы [ 2 ]

6 голосов
/ 11 июня 2011

Это называется декартово произведение .

select *
from
  table1
  cross join table2
  cross join table3
  cross join table4

То же самое:

select *
from
  table1, table2, table3, table4
4 голосов
/ 11 июня 2011

Используйте CROSS JOIN (вместо обычных INNER или LEFT OUTER JOIN)

select *
from
  table1
  cross join table2
  cross join table3
  cross join table4

или подразумеваемый JOIN согласно ответу GSerg ...from table1, table2, table3, table4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...