Oracle
 sql >> Base de données >  >> RDS >> Oracle

En SQL, comment puis-je générer toutes les combinaisons uniques possibles de 5 ! 56 ?

Si par "ensembles uniques" vous voulez dire ce que je pense que vous faites (désolé, je ne connais pas APL !), vous pouvez écrire :

SELECT e1.number,   e2.number,   e3.number,   e4.number,   e.number
  FROM elements e1, elements e2, elements e3, elements e4, elements e5
 WHERE e1.number < e2.number
   AND e2.number < e3.number
   AND e3.number < e4.number
   AND e4.number < e5.number
;

Oui, il existe une astuce Oracle pour générer des données à la volée, en utilisant la requête hiérarchique et la syntaxe CTE :

WITH elements AS
( select rownum as number
  from dual
  connect by level <= 56 )
SELECT e1.number,   e2.number,   e3.number,   e4.number,   e.number
  FROM elements e1, elements e2, elements e3, elements e4, elements e5
 WHERE e1.number < e2.number
   AND e2.number < e3.number
   AND e3.number < e4.number
   AND e4.number < e5.number
;