Connaitre la colonne contenant la valeur Max

Fermé
ossolivan Messages postés 10 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 26 juillet 2010 - 26 juil. 2010 à 04:03
ossolivan Messages postés 10 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 26 juillet 2010 - 26 juil. 2010 à 17:56
Bonjour,
Je suis entrain de développer un outil générant un planning pour les employés d'une entreprise, et je bloque !

En effet, je dispose d'un tableau stocké dans une bdd sql sous la forme:

id val1 val2 val3 val4........
1 10 16 11 15.........
2 15 10 15 16.........
6 14 17 11 12.........
9 15 14 12 10.........

Mon soucis réside dans le fait que je cherche a récupérer le "valX" correspondant à la valeur max quand l' "id" est égal à "1" par exemple.

Je pensais me servir de la requête
SELECT MAX(colonne)...
mais cette dernière me retourne le contenu, ce qui m intéresserais c est le nom de la colonne contenant cette valeur.

Je vous remercie beaucoup par avance pour votre contribution.

A voir également:

1 réponse

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
26 juil. 2010 à 09:36
Bonjour,

tu peux faire une sorte de switch case dans ta requête SQL

SELECT
    CASE
        WHEN val1 >= val2 AND val1 >= val3 AND val1 >= val4 THEN val1
        WHEN val2 >= val1 AND val2 >= val3 AND val2 >= val4 THEN val2
        WHEN val3 >= val1 AND val3 >= val2 AND val3 >= val4 THEN val3
        ELSE val4
    END AS max_val


tu peux ajouter des conditions avec un "WHERE" et c'est bon ^^

lien en anglais :
https://stackoverflow.com/questions/71022/sql-max-of-multiple-columns
1
ossolivan Messages postés 10 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 26 juillet 2010 1
26 juil. 2010 à 17:56
Merci infiniment pour ta réponse.
Effectivement ta solution me semble correct, mais finalement j ai opté pour du pure php. Cherchant a récupérer le nom de la colonne contenant la valeur max, avec des clauses "if.." si ca t intersse je te met un bout de mon code:
$val_prev = mysql_fetch_assoc ($req_q_date);
$max=max($val_prev['7h'],$val_prev['8h'],$val_prev['9h'],$val_prev['10h'],$val_prev['11h'],$val_prev['12h'],$val_prev['13h'],$val_prev['14h'],$val_prev['15h'],$val_prev['16h'],$val_prev['17h'],$val_prev['18h'],$val_prev['19h']);
echo($max.'<br>');
if ($max==$val_prev['7h']) $h_p='7h';
if ($max==$val_prev['8h']) $h_p='8h';
if ($max==$val_prev['9h']) $h_p='9h';
if ($max==$val_prev['10h']) $h_p='10h';
if ($max==$val_prev['11h'])$h_p='11h';
if ($max==$val_prev['12h']) $h_p='12h';
if ($max==$val_prev['13h']) $h_p='13h';
if ($max==$val_prev['14h']) $h_p='14h';
if ($max==$val_prev['15h']) $h_p='15h';
if ($max==$val_prev['16h']) $h_p='16h';
if ($max==$val_prev['17h']) $h_p='17h';
if ($max==$val_prev['18h']) $h_p='18h';
if ($max==$val_prev['19h']) $h_p='19h';


echo($h_p.'<br>');
$shiftM=false;$shiftJ=false;$shiftS=false;

if ($h_p=='7h' || $h_p=='8h' || $h_p=='9h' || $h_p=='10h' || $h_p=='12h' || $h_p=='13h' || $h_p=='14h' ) 
$shiftM=true;
if ($h_p=='9h' || $h_p=='10h' || $h_p=='11h' || $h_p=='12h' || $h_p=='14h' || $h_p=='15h' || $h_p=='16h' )
 $shiftJ=true;
if ($h_p=='17h' || $h_p=='18h' || $h_p=='19h' ) 
$shiftS=true;


C'est bourrin et primitif, mais ca marche et sans lenteurs...

merci encore pour ton interet.
0