2010-11-11 7 views
19

Kann jemand eine Tabelle mit m Spalten aus der Tabelle von n Zeilen erstellen, wobei die Werte in den Spalten jeder Zeile eine andere Kombination oder Permutation von Werten aus der ursprünglichen Tabelle darstellen?Wie erzeugt man eine Permutationen oder Kombinationen von n Zeilen in m Spalten?

Zum Beispiel kann die Ursprungstabelle hat 1-Säule (NUMBER_VALUE) mit 3 (n = 3) Zeilen:

1 
2 
3 

Die Tabelle enthält, die Kombinationen (die Reihenfolge spielt keine Rolle) von zwei Werten (m = 2) wäre die folgende:

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

und die Tabelle von Permutationen der folgenden wären:

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

Die Reihenfolge der Zeilen spielt keine Rolle.

Vielen Dank im Voraus!

Antwort

29

Kombinationen:

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

Permutationen:

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

ich, dass die Werte in der ursprünglichen Tabelle gehe davon einzigartig sind.

Um für größere Werte von m zu generalisieren, müssen Sie weitere Joins hinzufügen.

+0

Sieht aus wie die allgemeine Lösung für Niko's Problem, wo er die Verbindung mit sich selbst auf einem Tisch brauchte. T2 = T1. – hobs

Verwandte Themen