Exercice SQL -- P01E06 -- Enumération, produits cartésiens
par
, 02/12/2022 à 21h18 (418 Affichages)
Le 6e exercice, dénommé "énumération", consiste à insérer une suite de 9990 lignes/valeurs en 1 seule requête à partir d'une table contenant déjà 10 valeurs de 0 à 9.
Bien sûr, je pense tout de suite à une CTE récursive, mais dans ce cas à quoi servirait ces 10 valeurs initiales ? Avec une CTE récursive je pourrais faire sans... Et puis bon, si je peux éviter 10 000 récursions, c'est toujours ça de pris. 10 000 lignes, c'est 10 × 10 × 10 × 10 lignes, soit 4 produits cartésiens, soit 4 CROSS JOIN. C'est sûrement plus dans l'esprit de l'exercice
Ma solution :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 INSERT INTO T_ENTIER_ENT (ENT_N) SELECT ALL t4.ENT_N * 1000 + t3.ENT_N * 100 + t2.ENT_N * 10 + t1.ENT_N FROM T_ENTIER_ENT AS t1 -- Les unités CROSS JOIN T_ENTIER_ENT AS t2 -- Les dizaines CROSS JOIN T_ENTIER_ENT AS t3 -- Les centains CROSS JOIN T_ENTIER_ENT AS t4 -- Les milliers WHERE t4.ENT_N * 1000 + t3.ENT_N * 100 + t2.ENT_N * 10 + t1.ENT_N > 9 ORDER BY 1 ASC;