2010-11-11 49 views
19

¿Alguien sabe cómo crear una tabla con m columnas de la tabla de n filas donde los valores en las columnas de cada fila representan una combinación diferente o permutación de valores de la tabla original?¿Cómo generar permutaciones o combinaciones de n filas en m columnas?

Por ejemplo, la tabla original tiene 1 columna (NUMBER_VALUE) con 3 (n = 3) filas:

1 
2 
3 

La tabla que contiene combinaciones (el orden no importa) de dos valores (m = 2) sería el siguiente:

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

y la tabla de permutaciones sería la siguiente:

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

El orden de las filas no importa.

¡Gracias de antemano!

Respuesta

29

combinaciones:

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

permutaciones:

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

Estoy asumiendo que los valores en la tabla original son únicos.

Para generalizar para valores mayores de m, necesita agregar más combinaciones.

+0

Parece la solución general al problema de Niko, donde necesitaba la unión en una mesa consigo mismo. T2 = T1. – hobs

Cuestiones relacionadas