2010-11-11 14 views
19

Qualcuno sa come creare una tabella con m colonne dalla tabella di n righe in cui i valori nelle colonne di ogni riga rappresentano una combinazione o permutazione diversa di valori dalla tabella originale?Come generare permutazioni o combinazioni di n righe in m colonne?

Ad esempio la tabella originale ha 1 colonna (NUMBER_VALUE) con 3 (n = 3): righe

1 
2 
3 

La tabella che contiene combinazioni (l'ordine non importa) di due valori (m = 2) potrebbe essere il seguente:

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

e la tabella di permutazioni sarebbe il seguente:

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

L'ordine delle righe non ha importanza.

Grazie in anticipo!

risposta

29

Abbinamenti:

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

permutazioni:

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

Io parto dal presupposto che i valori nella tabella originale sono unici.

Per generalizzare per valori maggiori di m è necessario aggiungere più join.

+0

Sembra la soluzione generale al problema di Niko, in cui aveva bisogno del join su un tavolo con se stesso. T2 = T1. – hobs

Problemi correlati