Connaitre la colonne contenant la valeur Max
ossolivan
Messages postés
12
Statut
Membre
-
ossolivan Messages postés 12 Statut Membre -
ossolivan Messages postés 12 Statut Membre -
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
Je vous remercie beaucoup par avance pour votre contribution.
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.
1 réponse
-
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
-
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.
-