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

Requêtes MySQL Discussion :

Résultat en colonne


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce intéressant?
    Inscrit en
    Juin 2009
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Est-ce intéressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par défaut Résultat en colonne
    Bonjour à tous,

    Voila, j'ai une demande qui a surement été posé, mais je sais pas comment l'exprimer dans ma recherche, donc pardonnez d'avance si la demande est double.

    Voila, je voudrais créer une requète qui me ramène une liste de clients avec le montant facturé par année. En gros, la requète serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT TABLE_CLIENT.CLIENT,
    TABLE_PERIODE.ANNEE,
    TABLE_FACTURE.TTC
    FROM TABLE_CLIENT,
    TABLE_PERIODE,
    TABLE_FACTURE
    WHERE
    TABLE_FACTURE.ID_CLIENT = TABLE_CLIENT.ID_CLIENT
    AND
    TABLE_FACTURE.ID_PERIODE = TABLE_PERIODe.ID_PERIO
    Ce code fonctionne bien mais me retourne le résultat sous la forme suivante

    CLIENT / ANNEE / TTC
    keitaro_bzh / 2011 / 50
    keitaro_bzh / 2010 / 45
    keitaro_bzh / 2011 / 40

    Mais je voudrais pouvoir avoir le résultat sur une seul ligne, genre

    CLIENT / 2011 / 2010 /2009
    keitaro_bzh / 50 / 45 / 40

    Mais je sais pas comment faire, ni si cela est réalisable...

    Merci d'avance pour vos réponses

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 433
    Billets dans le blog
    11
    Par défaut
    La fonction PIVOT n'existe pas dans MySQL, il va falloir que tu fasses quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT TABLE_CLIENT.CLIENT,
    SUM(DECODE(TABLE_PERIODE.ANNEE, 2011, TABLE_FACTURE.TTC, 0)) 2011,
    SUM(DECODE(TABLE_PERIODE.ANNEE, 2010, TABLE_FACTURE.TTC, 0)) 2010,
    SUM(DECODE(TABLE_PERIODE.ANNEE, 2009, TABLE_FACTURE.TTC, 0)) 2009
    FROM TABLE_CLIENT,
    TABLE_PERIODE,
    TABLE_FACTURE
    WHERE
    TABLE_FACTURE.ID_CLIENT = TABLE_CLIENT.ID_CLIENT
    AND
    TABLE_FACTURE.ID_PERIODE = TABLE_PERIODE.ID_PERIODE
    GROUp BY TABLE_CLIENT.CLIENT

  3. #3
    Membre très actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce intéressant?
    Inscrit en
    Juin 2009
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Est-ce intéressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par défaut
    Super, merci pour ta réponse, je vais tester de suite.

    Cependant, si je comprends bien, je vais pas pouvoir mettre les années en dynamique? Il faut que je crée les colonnes manuellement?

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 433
    Billets dans le blog
    11
    Par défaut
    Pour mettre les années en dynamique, tu dois pouvoir le faire en faisant une procédure... mais cela reste à voir.

  5. #5
    Membre très actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce intéressant?
    Inscrit en
    Juin 2009
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Est-ce intéressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par défaut
    Arf, tu me parles correct stp, procédure toi même..

    Non plus sérieux, tu sais, hormis sorti de mes SELECT et LEFT OUTER JOIN, je suis pas un as de la requète.

    En tout cas, merci, j'ai réussi à me dépatouiller grace à ton aide.

    Cependant le code que j'ai au final est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT TABLE_CLIENT.CLIENT,
    SUM(IF(TABLE_PERIODE.ANNEE = '2011', TABLE_FACTURE.TTC, 0)) "2011",
    SUM(IF(TABLE_PERIODE.ANNEE = '2010', TABLE_FACTURE.TTC, 0)) "2010",
    SUM(IF(TABLE_PERIODE.ANNEE = '2009', TABLE_FACTURE.TTC, 0)) "2009"
    FROM TABLE_CLIENT,
    TABLE_PERIODE,
    TABLE_FACTURE
    WHERE
    TABLE_FACTURE.ID_CLIENT = TABLE_CLIENT.ID_CLIENT
    AND
    TABLE_FACTURE.ID_PERIODE = TABLE_PERIODE.ID_PERIODE
    GROUP BY TABLE_CLIENT.CLIENT
    j'ai pas réussi à faire fonctionner la fonction decode

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 433
    Billets dans le blog
    11
    Par défaut
    Autant pour moi j'ai confondu avec Oracle... mais tu as réussi à trouver la fonction qui correspondait... Ouf !

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

Discussions similaires

  1. Afficher résultat en colonne -> en ligne
    Par Sanceray3 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2011, 20h55
  2. Résultat en colonne
    Par cedlannoy dans le forum SQL
    Réponses: 1
    Dernier message: 31/03/2010, 10h35
  3. Passage lignes résultats en colonne
    Par mr_keyser dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/03/2009, 08h37
  4. Mettre les résultats en colonne
    Par webfranc dans le forum SQL
    Réponses: 9
    Dernier message: 05/05/2008, 15h10
  5. Résultat Ligne -> Colonne
    Par Thony_7 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/04/2007, 15h35

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