Bonjour,
je cherche a constituer une requete a mon sens assez complexe a destination d'un tableau de synthese.
3 Tables : articles / ventes /magasins
table article :
->code_article
->type_article
->nom_article
table ventes :
->numero_vente
->numero_ticket
->numero_magasin
->date_vente
->code_article
table magasins:
->code_magasin
->nom_magasin
Le traitement doit se faire en 2 etapes. (a mon sens)
trouver dans la table ventes tous articles vendus entre plusieurs fourchettes de prix :
0 à 100> G1
100 à 200 > G2
200 à 300 >g3
J'y arrive sans soucis dans un CASE en excluant les types 99999 (car les cartes G sont vendues comme des articles à part entière,donc il faut les différencier des autres)
je sors une structure telle que celle ci :
[date_vente|typeG]
jusque là , tout va bien ...
dans un 2eme temps, faire correspondre par jointure articles et ventes sur le code_article qui correspond à type_precis (type_article=9999)
(la c'est bon !)
Ce qui me donne la liste de toutes les ventes avec le type_article 9999 .. Seulement, chaque type_article = 9999 (nombre fixe pour l'instant, mais certainement amené à évoluer), me retourne textuellement :
code_article|type_article|nom_article|date
============================
2548|99999|"Carte type G1"|20110901
4782|99999|"Carte type G2"|20110705
12458|99999|"Carte type G3"|20110504
L'objectif final de la requete est le suivant :
Indiquer pour chaque magasin entre 2 dates :
le nombre de cartes de chaque type vendu (en qté)
le % correpondant au nombre de cartes vendues de ce type divisé par le nombre d'articles éligibles (cf : sortie de requete CASE)
Résultat attendu :
Magasin | Cartes G1 (nb) | Cartes G1 (%) | Cartes G2 (nb)| Cartes G2 (%) | Cartes G3 (nb) | Cartes G3 (%)
=======================================
Magasin 1 | 100 | 8 % | 50 | 78 % | 3| 6% |
Magasin 2 | 10| 83% | 13| 6% | 79| 45% |
Problème : je ne sais pas comment faire correspondre d'un cotés mes articles avec des libelles textuels avec en face mes ventes codfiées en fonction de leur montant (en gros faire coorespondre G1 avec "Carte type G1", et ensuite faire les operations)
Pour rajouter une précision sur la finalité, l'idée est de comptabiliser tous les articles susceptibles d'etre eligible à une carte (de part leur fourchette de prix) et les mettre en rapport avec le nombre de cartes réellement vendues pour cette catégorie d'articles.
Précision complémentaire, la requete est à intégrer dans un outil de BI dans lequel il m'est possible de générérer un tableau croisé à partir du moment où le nombre de colonnes à basculer est statique.
Autre précision, nous ne sommes pas dans une structure completement relationnelle, mais dans un datamart très mal concu dans lequel il n'existe aucune clé ou index, et les temps de traitements sont bien supérieurs au meme requetage dans la structure relationnelle classique .
Je vous concede qu'un datamart est "censé" permettre des calculs (notamment de BI) accélérés de part une dénormalisation des certaines informations ... Mais la il n'est vraiment pas "optimisé" ^^
Toute aide sera la bienvenue.![]()
Partager