Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/12/2010, 06h56   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 12
Points : 3
Points : 3
Par défaut Regroupement de résultats sur une seul ligne

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.
ximun974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 11h10   #2
Invité de passage
 
Inscription : décembre 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 12
Points : 3
Points : 3
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 ...
ximun974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 11h52   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 980
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 980
Points : 18 224
Points : 18 224
Envoyer un message via MSN à CinePhil
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 :
1
2
3
4
5
6
7
8
9
10
SELECT t1.Client, t1.GroupProduit, t1.SousGroupeProduit,
  t1.Période AS Période1,
  t1.CA AS CA1,
  t2.Période AS Période2,
  COALESCE(t2.CA, 0) AS CA2
FROM ta_table t1
LEFT OUTER JOIN t2 
  ON t2.Client = t1.Client
  AND t2.GroupProduit = t2.GroupProduit
  AND t2.SousGroupeProduit = t1.SousGroupeProduit
__________________
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 !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 12h55   #4
Invité de passage
 
Inscription : décembre 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 12
Points : 3
Points : 3
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 !!!
ximun974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h26.


 
 
 
 
Partenaires

Hébergement Web