Как сгенерировать перестановки или комбинации n строк в m столбцах?

Кто-нибудь знает, как создать таблицу с m столбцами из таблицы из n строк, где значения в столбцах каждой строки представляют собой другую комбинацию или перестановку значений из исходной таблицы?

Например, исходная таблица имеет 1 столбец (number_value) с 3 (n=3) строками:

1
2
3

Таблица, содержащая комбинации (порядок не имеет значения) двух значений (m = 2), будет следующей:

number1, number2
1,2
1,3
2,3

и таблица перестановок будет следующей:

number1, number2
1, 2
2, 1
1, 3
3, 1
2, 3
3, 2

Порядок строк значения не имеет.

Заранее спасибо!


person Niko Gamulin    schedule 11.11.2010    source источник


Ответы (1)


Комбинации:

SELECT T1.x, T2.x
FROM your_table T1
JOIN your_table T2
ON T1.x < T2.x

Перестановки:

SELECT T1.x, T2.x
FROM your_table T1
JOIN your_table T2
ON T1.x != T2.x

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

Чтобы обобщить для больших значений m, вам нужно добавить больше соединений.

person Mark Byers    schedule 11.11.2010
comment
Похоже на общее решение проблемы Нико, где ему нужно было соединить стол с самим собой. Т2=Т1. - person hobs; 06.05.2013