Isoler valeur min / max résultats requête

Itachi3712
Invité n'ayant pas de compte PHPfrance

08 oct. 2010, 10:11

Bonjour,

Je souhaiterais récupérer le résultat min et le résultat max d'une requête. La requête compte le nombre de jours entre une date de début et une date de fin pour chaque fiche présente en base. J'additionne ces résultats que je divise par le nombre de fiches afin d'avoir un nombre de jours moyens.Mon souhait est d'isoler parmis toutes les valeurs que j'additionne, le chiffre le plus petit et le chiffre le plus grand afin d'obtenir un délais le plus court, délais moyen et délais le plus long.

J'espère avoir été claire.
Merci pour vos retours.

Cordialement,

ViPHP
ViPHP | 5462 Messages

08 oct. 2010, 10:22

J'additionne ces résultats que je divise par le nombre de fiches afin d'avoir un nombre de jours moyens.Mon souhait est d'isoler parmis toutes les valeurs que j'additionne, le chiffre le plus petit et le chiffre le plus grand afin d'obtenir un délais le plus court, délais moyen et délais le plus long.
hello,
MIN(), MAX() et AVG() font tout ce que tu souhaites :wink:
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

Itachi3712
Invité n'ayant pas de compte PHPfrance

08 oct. 2010, 10:37

J'additionne ces résultats que je divise par le nombre de fiches afin d'avoir un nombre de jours moyens.Mon souhait est d'isoler parmis toutes les valeurs que j'additionne, le chiffre le plus petit et le chiffre le plus grand afin d'obtenir un délais le plus court, délais moyen et délais le plus long.
hello,
MIN(), MAX() et AVG() font tout ce que tu souhaites :wink:
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

Merci pour la réponse, mais je ne vois pas en quoi cela va m'aider ou alors je suis une super buze ! Je ne cherche le min et le max d'un champ de la base, mais le min et le max du résultat obtenu par ma requête. Voici mon code, ça sera plus simple :

Code : Tout sélectionner

$rq ="SELECT * FROM instance WHERE (date_cloture>='$datedeb' AND date_cloture<='$datefin')"; $result=mysql_query($rq) or die('Erreur SQL !'.Problème.'<br>'.mysql_error()); $nb_inst=mysql_num_rows($result); //recupération nbre de résultat if ($nb_inst != 0) { // Appel de la fonction qui calcule la différence entre 2 dates. while ($row_inst = mysql_fetch_array($result)) { $nb_jours += diff_date(substr($row_inst[date_creat],8,2),substr($row_inst[date_creat],5,2),substr($row_inst[date_creat],0,4),substr($row_inst[date_cloture],8,2),substr($row_inst[date_cloture],5,2),substr($row_inst[date_cloture],0,4)); } if ($nb_jours != 0) { $delais_moyen = floor(($nb_jours/$nb_inst)); echo $delais_moyen; } } else { echo "Aucun résultat"; }
Dans le résultat de ma fonction diff_date, je dois isoler le nombre de jours le plus petit et le nombre de jours le plus grand.
Merci pour ton aide.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 oct. 2010, 21:07

Tu peux faire ton calcul directement dans ta requête pour ramener directement le résultat souhaité sans avoir à le retraiter avec php ensuite. En faisant ainsi, tu peux appliquer les fonction max() et min() pour obtenir ton résultat.
Quelques petites manipulations avec les dates (PHP/MySQL)

Sinon, tu peux le faire en php, simplement en stockant le résultat de ton calcul dans une variable et en la mettant à jour uniquement avec les valeurs supérieure ou inférieure :
$max = 0; // on déclare la variable
while ( ... ) {
  $calcul = ...
  if ($calcul > $max) // Si le résultat du calcul est supérieur à la valeur max actuelle...
    $max = $calcul; // ... on remplace la valeur max par la nouvelle valeur
}
Même principe pour récupérer la valeur min :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...