|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 12 ![]() |
Bonjour à tous, et merci d'avance pour votre aide
J'ai le pb suivant ... qui me bloque depuis trop de temps, le mieux est de l'expliquer par un exemple. J'ai une table qui contient les champs suivants : Client GroupProduit SousGroupeProduit Période CA avec par exemple les valeurs Toto, Voiture, Freins, 201011, 134 Toto, Maison, Porte, 200911, 267 Toto, Voiture, Freins, 200911, 389 Toto, Voiture, roue, 201011, 471 Sachant qu'il n'y a que 2 périodes dans ma table (année n et année n-1), je cherche à avoir le résultat suivant au travers d'une vue Client GroupProduit SousGroupeProduit Période1 CA1 Période2 CA2 Toto, voiture, freins, 200911, 389, 201011, 134 Toto, voiture, roue, 200911, 0,201011, 471 Toto, maison, porte, 200911, 267, 201011, 0 Toutes mes requêtes me sortent la première ligne ... mais pour avoir les 2 autres ... ben j'y arrive pas. La solution est surement dans les unions, mais je n'ai pas encore trouvé. Si qq'un a une petite idée, c'est avec plaisir. Merci encore. |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 12 ![]() |
Pour faciliter ma jointure, j'ai rajouter à ma table un champs ID qui est unique pour le triplet : client, groupeproduit, sousgroupeproduit.
je voudrait donc que pour cet ID, il me donne le CA de la période1, et le CA de la période2 (si les 2 CA sont présent), et sinon qu'il me mette 0 dans la colonne ou le CA n'existe pas. Avec l'ajout de l'id, cette requête me renvoie tjs les lignes aillant du ca pour les 2 périodes ... mais pas celles avec un CA sur une des 2 select a.client, a.groupproduit, a.sousgroupeproduit, b.ca ca2009, a.ca ca2010 from matable a cross join matable b on a.id=b.id where a.periode=date_format((curdate() + interval -(1) month),'%Y%m') and b.periode=date_format((curdate() + interval -(13) month),'%Y%m') and order by a.nomclient, a.groupe, a.sousgroupe A bientôt ... |
|
|
00
|
|
|
#3 | ||
![]() ![]() |
Ce que tu cherches à faire est de la cosmétique et n'est pas le boulot du SGBD mais celui du logiciel qui utilise la BDD.
Les colonnes Client, Groupe et SousGroupe ne devrait contenir que des identifiants faisant références à ceux des tables externes correspondantes et pas le nom. Comme tu n'as que deux périodes, tu peux faire la requête suivante mais plus tu auras de périodes et plus tu auras de jointures. Il te faudra modifier ta requête à chaque fois que tu ajouteras une période. Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 12 ![]() |
Merci pour ta réponse, mais ça me multiplie les lignes et ne me mets pas des 0 lorsqu'il n'y a pas de CA pour la période. N'y aurait-il pas une tite modif à faire? Merci encore pour ton aide .. je me sens moins seul dans ma galère !!!
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com