2010-11-11 22 views
19

Est-ce que quelqu'un sait comment créer une table avec m colonnes de la table de n lignes où les valeurs dans les colonnes de chaque rangée représentent une combinaison différente ou permutation des valeurs de la table d'origine?Comment générer une permutation ou une combinaison de n lignes dans m colonnes?

Par exemple, la table d'origine comporte une colonne (NUMBER_VALUE) à 3 (n = 3) lignes:

1 
2 
3 

Le tableau qui contient des combinaisons de (l'ordre n'a pas d'importance) de deux valeurs (m = 2) serait la suivante:

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

et la table des permutations serait la suivante:

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

L'ordre des lignes n'a pas d'importance.

Merci d'avance!

Répondre

29

Combinaisons:

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

: Permutation

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

Je suppose que les valeurs dans la table d'origine sont uniques.

Pour généraliser pour des valeurs plus grandes de m, vous devez ajouter plus de jointures.

+0

On dirait que la solution générale au problème de Niko, où il avait besoin de la jointure sur une table avec lui-même. T2 = T1. – hobs