IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Need help pour une petite requête


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 70
    Points
    70
    Par défaut Need help pour une petite requête
    Bonjour tout le monde !

    Je me casse la tête depuis un petit bout de temps sur une requête.

    J'ai ma table vente avec la structure suivante :
    idClient, annee, montant

    Comment faire pour afficher le montant de chaque client en 2006 et 2007 ?
    Pour info, le champs annee ne contient que 2006 et 2007.
    Un client peut avoir un montant en 2006 mais pas 2007 et inversement.

    Voilà le résultat escompté :
    idclient, 2006, 2007
    1, 3432.50, 737.00
    2, 2299.30, 2321.90
    3, , 323.30
    4, 543,
    ....

    D'avance un grand merci à ceux qui pourront m'aider !!

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    La requête que vous souhaitez réaliser ne fait que formater des données normalisées et n'y apportent finalement aucune valeur ajoutée. Il vaut peut être mieux faire ça côté langage et non dans la requête.

    Comme l'explique très bien Fred dans son article : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9

    Ceci étant dit et comme je sais qu'au final, vous souhaiterai le faire directement dans une requête, voici un coup de main.

    A supposer que vous ayiez une table "Client" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT Client.idclient, Vente2006.montant as 2006, Vente2007.montant as 2007
    FROM Client
    	LEFT JOIN Vente Vente2006
    		ON Vente2006.IdClient = Client.idclient 
    		AND Vente2006.Annee = 2006
    	LEFT JOIN Vente Vente2007
    		ON Vente2007.IdClient = Client.idclient 
    		AND Vente2007.Annee = 2007
    Ceci montre bien que la requête n'est pas du tout générique et qu'un changement d'année la rend inutile. Alors qu'un traitement côté langage pourrait traiter les données brutes manière générique.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 70
    Points
    70
    Par défaut
    Alors là merci beaucoup, c'est exactement cela qu'il me fallait !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide pour une petite requête avec distinct
    Par mims1664 dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/02/2009, 12h58
  2. Recherche un pro du flash pour une petite modif
    Par Stegue dans le forum Flash
    Réponses: 7
    Dernier message: 10/06/2007, 08h20
  3. Quel SGBDR choisir pour une petite application
    Par malikoo dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 06/05/2007, 13h59
  4. Need help pour installer upgrade linux Debian
    Par jejerome dans le forum Administration système
    Réponses: 2
    Dernier message: 26/03/2006, 19h26
  5. need help pour : boucle & expression régulière
    Par Fabouney dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2005, 02h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo