Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/05/2006, 14h26   #1
Invité régulier
 
Inscription : avril 2002
Messages : 11
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2002
Messages : 11
Points : 7
Points : 7
Envoyer un message via MSN à nirousse
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 :
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 !!!');
nirousse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 15h39   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
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é...
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 18h14   #3
Invité régulier
 
Inscription : avril 2002
Messages : 11
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2002
Messages : 11
Points : 7
Points : 7
Envoyer un message via MSN à nirousse
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 ?
nirousse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 19h24   #4
Invité régulier
 
Inscription : avril 2002
Messages : 11
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2002
Messages : 11
Points : 7
Points : 7
Envoyer un message via MSN à nirousse
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 :
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
nirousse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h30.


 
 
 
 
Partenaires

Hébergement Web