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 :

créer une vue avec les valeurs d'un champ comme colonne


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 19
    Points : 21
    Points
    21
    Par défaut créer une vue avec les valeurs d'un champ comme colonne
    Bonjour,

    Je voudrais créer une vue qui représente différemment le contenu d'une table.
    Voici le résultat de ma requête lors je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `ma_table`
    +----------+--------------+-------------+------------+
    | ARTICLE | FIELDNAME | SEQUENCE_NO | FIELDVALUE |
    +----------+--------------+-------------+------------+
    | ARTICLE1 | ZZALLOYTYPE | 001 | OG4 |
    | ARTICLE1 | ZZPRECIOUSMC | 001 | 020 |
    | ARTICLE1 | ZZPRECIOUSMT | 001 | 010 |
    | ARTICLE1 | ZZPRECIOUSMW | 001 | 4.800 |
    | ARTICLE1 | ZZALLOYTYPE | 002 | OG5 |
    | ARTICLE1 | ZZPRECIOUSMC | 002 | 020 |
    | ARTICLE1 | ZZPRECIOUSMT | 002 | 010 |
    | ARTICLE1 | ZZPRECIOUSMW | 002 | 15.427 |
    +----------+--------------+-------------+------------+
    Comme vous pouvez le constater nous avons 2x fois la même valeur dans le champ FIELDNAME pour un ARTICLE donné à une SEQUENCE_NO donnée.

    Je voudrai afficher le contenu de FIELDNAME comme en-tête de colonne avec pour chaque couple ARTILCE-SEQUENCE la FIELDVALUE pour de chaque FIELDNAME. Voici le résultat recherché :

    +------------+-------------+--------------+--------------+-------------+--------------+
    | ARTICLE | SEQUENCE_NO | ZZPRECIOUSMT | ZZPRECIOUSMC | ZZALLOYTYPE | ZZPRECIOUSMW |
    +------------+-------------+--------------+--------------+-------------+--------------+
    | ARTICLE1 | 001 | 010 | 020 | OG4 | 4.800 |
    | ARTICLE1 | 002 | 010 | 020 | OG5 | 15.427 |
    +------------+-------------+--------------+--------------+-------------+--------------+
    Est-il possible de faire ceci avec une requête SQL sans passer par des boucles en PHP ?

    Merci d'avance
    PS: ne me demandez pourquoi le modèle de cette table a été prévu comme ceci, je n'ai pas le choix et je dois m'adapter

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    tu as toujours 4 fieldname pour un couple article,sequence_no?
    tu devrais pouvoir t'en sortir en faisant des auto-jointures mais je ne garantie pas les performances

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 757
    Points
    23 757
    Par défaut
    Bonjour,

    C'est de la cosmétique, et le SQL n'est pas fait pour ça... Ca va rapidement dégrader les performances et surtout, la requête est bonne à réécrire dès qu'un nouveau FIELDNAME apparaît.
    Il vaut donc mieux traiter cela en PHP.
    Un peu de lecture sur le sujet : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Tu peux toujours essayer de t'inspirer de mon article sur l'émulation de tableau croisé dynamique avec PHP et MySQL dont le lien figure dans ma signature.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

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

Discussions similaires

  1. Créer une vue avec des onglets
    Par Flackou dans le forum MFC
    Réponses: 2
    Dernier message: 14/06/2007, 11h43
  2. Réponses: 2
    Dernier message: 15/12/2006, 14h22
  3. Créer une vue avec du SQl dynamique
    Par gghonang2 dans le forum Oracle
    Réponses: 15
    Dernier message: 06/09/2006, 22h03
  4. [VB6]Mettre à jour une table avec les valeurs d'une DATAGrid
    Par mbzhackers dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/05/2006, 20h56
  5. Créer une vue avec des requêtes UNION ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/04/2005, 12h37

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