Isoler valeur min / max résultats requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Isoler valeur min / max résultats requête

Re: Isoler valeur min / max résultats requête

par Ryle » 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 :)

Re: Isoler valeur min / max résultats requête

par Itachi3712 » 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.

Re: Isoler valeur min / max résultats requête

par stealth35 » 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

Isoler valeur min / max résultats requête

par Itachi3712 » 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,