par , 27/11/2022 à 13h00 (505 Affichages)
Voici le 2e problème : le publipostage.
Ici on doit générer un nombre prédéterminé de lignes, selon la valeur d'une colonne.
Un ptit côté dynamique qui me plaît bien
L'énoncé nous laisse la possibilité d'utiliser d'autres tables/objets que ceux décrits, je me contenterai d'une unique CTE récursive
La CTE génère 1 ligne supplémentaire jusqu'à atteindre la valeur de T_PERSONNE_PRS.PRS_NOMBRE. Simple et efficace.
Ma solution :
1 2 3 4 5 6 7 8 9
| WITH RECURSIVE dataset (name, city, count, current) AS (
-- dataset.current est incrémenté à chaque récursion, permettra de stopper la récursion
SELECT ALL PRS_NOM, PRS_VILLE, PRS_NOMBRE, 1 FROM T_PERSONNE_PRS WHERE PRS_NOMBRE > 0 -- Graine
UNION ALL
SELECT ALL name, city, count, current + 1 FROM dataset WHERE current < count -- Récursion tant que dataset.current inférieur à dataset.count
)
SELECT ALL name, city
FROM dataset
ORDER BY name ASC, city ASC; |
Notons que les lignes dont T_PERSONNE_PRS.PRS_NOMBRE vaut 0 ne ressortent pas du tout.