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

Outils MySQL Discussion :

Sélection dynamique de champs


Sujet :

Outils MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Sélection dynamique de champs
    Bonjour à tous.

    J'ai besoin de faire un SELECT étrange, et je ne sais pas si c'est possible.


    Je m'explique : J'ai une table Prop qui a 1 id, 1 nom et 1 champ val.
    Ce champ val est un varchar qui contient en fait le nom de la colonne que je devrai récupérer dans une autre table Contenu.

    Exemple :
    Dans ma table Prop, j'ai :
    id - nom - type
    1 : Chaîne : varcharval
    2 : Texte : textval

    Et ma table contenu est structuré de la sorte :
    id - ridProp - varcharval - textval
    1 : 1 : Bonjour : NULL
    2 : 1 : Hello : NULL
    3 : 2 : NULL : Texte Multiligne

    etc etc...

    Et donc, vous aurez compris ce que je veux faire, 1 SELECT qui me sort directement la bonne colonne, tous renommé avec 1 AS avec 1 nom de mon choix.
    Je pensais à 1 truc du genre :
    SELECT contenu.id, (prop.type) AS valeur FROM prop,contenu WHERE contenu.ridProp=prop.id

    Mais cette requêt ne marche pas, c'est donc l'objet de mon post...

    Merci de votre aide !


    Je vous ai même crée un script de création de ces 2 tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TABLE prop (
     id int not null auto_increment primary key,
     nom varchar(32),
     type varchar(32)
    );
    INSERT INTO prop VALUES ('','Chaîne','varcharval');
    INSERT INTO prop VALUES ('','Texte','textval');
    CREATE TABLE contenu (
     id int not null auto_increment primary key,
     ridProp int,
     varcharval varchar(32),
     textval text
    );
    INSERT INTO contenu VALUES ('',1,'Bonjour','');
    INSERT INTO contenu VALUES ('',1,'Hello','');
    INSERT INTO contenu VALUES ('',2,'','Texte MultiLigne !!!');

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    plutôt que les [i] etc... s'il te plaît

    pour ta requête... non je ne pense pas que ce soit possible sans passer par un langage extérieur... désolé...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Ok, c'est modifié pour le code...


    si c'est pas possible...

    J'avais pensé passez par une procédure stockée, mais je crois que ce n'est pas encore bien géré avec MySQL, et je ne sais pas quel outil utilisé pour les crées/modifiées...

    J'ai aussi la possibilité de faire une table par type de données. est-ce que ça serait plus simple ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Bon, j'ai trouvé une réponse, qui me convient en partie.
    Il s'agit en faire de faire un CASE.
    Je peux mepermettre de faire ça, car je n'ai pas un nombre infini de colonne, mais je voudrais vraiment faire quelquechose de totalement souple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT contenu.id,
    (CASE prop.type
     WHEN 'textval' THEN contenu.textval
     WHEN 'varcharval' THEN contenu.varcharval
    END) AS valeur
    FROM prop,contenu WHERE contenu.ridProp=prop.id

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

Discussions similaires

  1. ADOTable : ajouter un champ en dynamique aux champs existant
    Par Sunchaser dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/03/2006, 18h06
  2. Dupliquer dynamiquement un champs (joindre un autre fichier)
    Par FMaz dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/03/2006, 11h27
  3. Ajout dynamique de champs de type file dans un formulaire !
    Par stitch dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/11/2005, 12h18
  4. Parcours dynamique des champs
    Par cosmos38240 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/11/2005, 15h54
  5. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 17h56

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