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 :

Passer de ligne en colonne


Sujet :

Requêtes MySQL

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut Passer de ligne en colonne
    Bonjour à tous,

    Suite à un changement de structure de table, je n’arrive pas avec une seule requête à obtenir ce que j’avais initialement.

    Au départ, j’avais une table taux_change définie comme ci-dessous. Pour une date donnée, on stocke différentes parités.



    Maintenant cette table prend la forme suivante : On stocke par ligne une seule parité.



    Question : comment à partir de la nouvelle table obtenir le premier tableau ?

    Le seule moyen que j'ai trouvé est de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
      SELECT date_change,
      SUM(IF(devise_source ='EUR' AND devise_cible = 'USD', parite,0)) AS EUR_USD,
      SUM(IF(devise_source ='EUR' AND devise_cible = 'GBP', parite,0)) AS EUR_GBP,
      SUM(IF(devise_source ='EUR' AND devise_cible = 'AUD', parite,0)) AS EUR_AUD,
      SUM(IF(devise_source ='EUR' AND devise_cible = 'ZAR', parite,0)) AS EUR_ZAR,
       SUM(IF(devise_source ='USD' AND devise_cible = 'GBP', parite,0)) AS USD_GBP
      FROM `taux_change`
      GROUP BY date_change
    Y-a-t-il plus simple ou plus efficace ?

    Par avance, un grand merci.

    Tavar
    Mieux vaut penser avant d'agir que d'agir en rêvant.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Tu peu boucler la 2eme table pour avoir la 1er avec un langage Web.

    Si ça t’intéresse je peu te crée un exemple sous PHP.
    A la recherche d'un film : http://chercher-un-film.com

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut
    Bonjour m4riachi,

    Tout d'abord, merci pour ta réponse.

    Je comprends ta proposition, mais je préfère avoir le résultat via mysql.

    J'utilise aussi PHP pour afficher les taux de change. En amont, il y a du sql. Je me posais simplement la question de savoir si on pouvait faire mieux que la requête proposée, sachant que j'obtiens (déjà) le résultat escompté.


    Tavar
    Mieux vaut penser avant d'agir que d'agir en rêvant.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    La nouvelle structure de table est meilleure car elle autorise toutes les possibilités sans modifier la structure de la table alors que pour ajouter une parité qui n'existe pas encore dans la première table, il faut ajouter une colonne.

    La contrepartie à cette modélisation meilleure, c'est que ce que le résultat que tu cherches à obtenir est de la cosmétique et n'est pas le boulot du SGBD mais celui de l'application qui interroge la BDD. Avec cette structure, on ne sait pas a priori combien il y aura de colonnes résultat.

    Comme l'a conseillé m4riachi, il vaut donc mieux utiliser le langage applicatif plutôt que le SQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Points : 88
    Points
    88
    Par défaut
    Tu peux le faire avec une jointure multiple (une jointure par colonne qui récupère le taux associé), mais c'est effectivement beaucoup mieux de le faire directement en PHP.

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    tu cherches à obtenir est de la cosmétique
    j'adore. Mais ça peut aussi signifier qu'il utilise des fonctions d'affichage qui affichent directement le résultat d'une requête.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

Discussions similaires

  1. Remettre des lignes en colonnes puis Passer du .txt vers excel ou .csv
    Par Debutant10 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/07/2012, 18h05
  2. Group By / Passer des lignes en colonnes
    Par star112 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/12/2011, 08h56
  3. Passer un tableau de lignes en colonnes
    Par elcommendatore dans le forum Oracle
    Réponses: 3
    Dernier message: 20/11/2009, 13h47
  4. Passer de lignes multiples à des colonnes
    Par LDPDC dans le forum Oracle
    Réponses: 4
    Dernier message: 30/10/2009, 22h36
  5. Passer des données en colonne a données ordonnées en ligne
    Par taollagad dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/05/2009, 02h36

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