|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2004 Messages : 3 ![]() |
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. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
On va probablement te répondre que ce que tu veux faire c'est de la cosmétique et que cela ne relève pas de SQL mais d'un langage procédural client du SGBD. Et on aura raison. Les tableaux croisés dynamiques qu'autorisent MS Access ou MS Excel , n'existent pas en MySQL. Tu peux, éventuellement, t'inspirer de ce que je présente dans mon article afférent à l'émulation d'un tableau croisé dynamique avec MySQL et PHP, mais tu aurais plus vite fait d'extraire les données en CSV, de les importer sous un tableur pour les mettre au format attendu.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2004 Messages : 3 ![]() |
merci du conseil, mais la réponse tombe completement a coté !
j'ai besoin de passer par mysql j'ai besoin de faire la resitution avec l'outil de BI de mon client Il est necessaire de l'avoir en temps reel ... Toute proposition est la bienvenue |
|
|
00
|
|
|
#4 | ||
|
Membre régulier
![]() Julien SIMONIngénieur systèmes et réseaux Inscription : février 2006 Messages : 100 ![]() |
Bonjour,
Pour les fourchettes de prix tu peux utiliser un regroupement par tranche : Code :
de 0 à 10 EUR de 10 à 50 EUR de 50 à +INF EUR |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com