{MySQL} une requete MAX sur les champs ?

volumeni -  
 volumeni -
Bonjour,

voila j'ai une table 'users' qui ressemble à ça :

NOM | Compétence1 |Compétence2 |Compétence3 |Compétence4 |Compétence5 |
Alfred | 0 | 15 |42 |81 |74 |
Gertrude| 90 | 55 |50 |19 |35 |


J'aimerais connaitre quelle requete écrire pour connaitre, pour chaque ligne, les 2 compétences les plus élevées, mais pas les valeurs, je m'en fiche...

Alfred => Compétence4 & Compétence5
Gertrude => Compétence1 & Compétence2

merci !
A voir également:

2 réponses

chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Salut,
alors je pense que le plus gros problème vient de ta table...avis perso...si tu veux rajouter une compétence ou faire des requêtes comme celles-ci, faudrait peut-être revoir la conception de la table..
Sinon, une solution Oracle:
SELECT nom,comp FROM
(
SELECT nom, comp,cmp,ROW_NUMBER() OVER (PARTITION BY nom ORDER BY comp DESC) AS t FROM
(
SELECT nom,competence1 AS comp,'ma competence1' AS cmp FROM COMPETENCE
UNION ALL
SELECT nom,competence2,'ma competence2' FROM COMPETENCE
UNION ALL
SELECT nom,competence3,'ma competence3' FROM COMPETENCE
UNION ALL
SELECT nom,competence4,'ma competence4' FROM COMPETENCE
UNION ALL
SELECT nom,competence5,'ma competence5'  FROM COMPETENCE
)
)
WHERE t<3

COMPETENCE étant ta table et j'ai du mettre un nom bidon pour identifier la compétence....
Pour MySql, je pense que tu devrais t'en sortir avec des LIMIT....
Y'a peut-etre plus simple..si d'autre ont des idées!! Peut-être une procédure pourrait le faire aussi!!
@+
0
volumeni
 
c'est bon j'ai trouvé
en passant par une table temporaire en fait.
0