Bonjour,
Je ne connais pas Pervasive et la doc à l'air absente d'internet ![:(](https://www.developpez.net/forums/images/smilies/icon_sad.gif)
On va essayer de faire avec ![:)](https://www.developpez.net/forums/images/smilies/icon_smile.gif)
LA question est : avez-vous le droit de faire des vues ?
Si oui c'est cool, sinon, faudra faire des copier-collé.
Ça marchera aussi mais c'est juste plus difficile (et long) à lire.
On y va :
1 2 3 4
| Create View V_Pdt_par_Formule as
SELECT num, count(1) as NB_Pdt_Dans_Formule
From Produit
Group by num; |
Donc, si tout va bien on peut faire :
SELECT * FROM V_Pdt_par_Formule where num <10;
On poursuit par :
1 2 3 4
| Create View V_Pdt_Et_Nb as
Select P.num, P.produit, P.qte, P.unité, NB.NB_Pdt_Dans_Formule
From Produit P
join V_Pdt_par_Formule NB on NB.num = P.num |
A ce stade on a une vue qui nous donne une colonne de plus que ce qu'il existe dans la table.
On peut s'en assurer par :
select * from V_Pdt_Et_Nb where num <10;
Et là on peut reformuler la demande initiale par :
"lister l'ensemble des produits par formule avec le nombre de formules qui utilisent ce même ensemble"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Select liste1.num
, liste1.produit
, liste1.qte
, liste1.unité
, liste1.NB_Pdt_Dans_Formule
, count(1) as NB_formule
From V_Pdt_Et_Nb liste1
left outer join V_Pdt_Et_Nb liste2
on liste1.num < liste2.num
And liste1.produit = liste2.Produit
And liste1.qte = liste2.qte
And liste1.unité = liste2.unité
And liste1.NB_Pdt_Dans_Formule = liste2.NB_Pdt_Dans_Formule
group by liste1.num
, liste1.produit
, liste1.qte
, liste1.unité
, liste1.NB_Pdt_Dans_Formule |
On peut même en faire une vue ![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Donnez nous des nouvelles
Partager