Select d'une table pour une autre table

Fermé
yuukinini - 31 déc. 2009 à 09:51
dam75 Messages postés 1041 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 - 31 déc. 2009 à 13:53
Bonjour,
Bonjour c'est mon premier post et j'ai des notions en sql mais j'ai un petit problème.
j'ai deux tables label et valeurLabel sous Mysql
label
id label
1 label1
2 label2

valeurLabel
id valeur labelId
1 1000 1
2 27/11/2009 2
3 200 1
4 13/12/2009 2

je fais la requete suivante : SELECT label.label, valeurLabel.valeur FROM label,valeurLabel WHERE label.id=valeurlabel.labelId
et j'obtiens le résultat suivant :

label valeur
label1 1000
label2 27/11/2009
label1 200
label2 13/12/2009

mais je voudrai avoir le résultat suivant :

label1 label2
1000 27/11/2009
200 13/12/2009

Alors ma question est: est ce que c'est possible? si oui comment je fais?
Merci d'avance

3 réponses

blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
31 déc. 2009 à 10:16
Salut,

tu ne peux pas, tu demandes quelque chose dont les noms de colonnes sont des valeurs du résultat de la requête.

Tu veux faire quoi, au juste, y'a peut-être moyen de s'arranger ?
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 déc. 2009 à 10:23
salut

tu peux deja faire un order by label
t enregistrement seront trié com tu veux mais en ligne et nom en colonne
0
au fait je voudrai faire un tableau croisé en mysql
0
dam75 Messages postés 1041 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
31 déc. 2009 à 13:53
Bonjour,

C'est impossible en l'état, car il n'y a RIEN dans ta structure de tables qui permette de relier entre elles, par ex, les valeurs 1000 et 27/11/2009 ... qu'est-ce qui fait que tu veuilles 1000 et 27/11/2009 et pas 1000 et 13/12/2009 ???
(une base de donnée n'est PAS sensée se servir de l'ordre pour lier des données entre elles : l'ordre peut changer à tout moment, par ex un ALTER TABLE)

-> Il te faut un champ de jointure ou de typage ou de groupement , qui permette à Mysql de retrouver ses petits ...

On pourrait "bidouiller" un truc horrible du genre grouper tes ID par paires (pair/impair), mais outre le fait que ce serait lent, ça risquerait de péter à la première mise à jour ...

Donc cette structure n'est pas très optimisée, et risque de te poser pleins de problèmes de ce genre ... il serait mieux de stocker le nombre et la date dans 2 champs différents, ce qui aurait également permis de normaliser (nombre entier VS date), alors que là je suppose que tout est en texte ...

Bon courage
0