Citation :
Voici une proposition pour éviter d'avoir une table compteur.
Sinon, dans la logique :
Table "CPT" avec "numcpt" allant de 1 à XXX (où XXX >> Nombre maxi désiré)
Exemple avec la table compteur (pour générer autant d'étiquettes que le qotite d'un produit) :
Select pro.codpro, cpt.numcpt
From pro, cpt
Where pro.codsoc = 2 and pro.codpro = 'A00001'
And cpt.numcpt <= pro.qotite
Exemple avec l'astuce ci-dessous : (à tester)
Select pro.codpro, level numcpt
From pro Connect by level <= pro.qotite
Where pro.codsoc = 2 and pro.codpro = 'A00001'
-----Message d'origine-----
De : CC
Envoyé : mercredi 4 octobre 2006 11:15
À : OT
Cc : SD
Objet : [Fwd: "Table" compteur sous Oracle]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Un oubli
- -------- Message original --------
Sujet: "Table" compteur sous Oracle
Date: Wed, 4 Oct 2006 10:56:00 +0200
De: SD
Pour: AV, HD, RG, TR, CC, MY
Problème habituel : Je veux avoir des séries de 1 à x où x correspond à un nombre retourné par ma requête.
Par exemple, pour imprimer les étiquettes de colis en plusieurs pièces :
si j’ai 3 colis pour mon produit, alors je veux faire les étiquettes 1/3, 2/3 et 3/3.
Habituellement, on a le choix entre :
- - Une table « compteur » qui contient une suite de 1 à xxx avec
xxx > que toute valeur possible de x.
- - La requête que nous a proposé Christophe l’autre jour, et qui
n’est pas des plus simple.
Je viens de tomber par hasard sur une requête qui fonctionne sous Oracle à partir de la version 9i, qui utilise une fonctionnalité « nouvelle » de « CONNECT BY ».
Le gros intérêt de cette syntaxe, c’est qu’elle est à la fois simple/courte, et évite de passer par une table utilisateur relativement inutile.
SELECT level FROM dual CONNECT BY level <= 20
Cette requête nous retourne tous les nombres de 1 à 20.
Cette autre requête nous retourne un compteur un peu plus bizarre :
Tous les nombres impairs de 1 à 10, puis tous les nombre de 11 à 20
SELECT level FROM dual CONNECT BY level <= 20
MINUS
SELECT level * 2 FROM dual CONNECT BY level * 2 < 10;
**SD***
- --
CC -----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (MingW32)
iD8DBQFFI3ucMl/S4ZhUIzERArAtAJ9RiHDFTVj5NFW51dQ1PEy4mHAueACg2KN5
3p1buD/P/D0exjXqgRWLcw0=
=iuPI
-----END PGP SIGNATURE-----
|