Page 1 sur 1

prendre les x plus grande valeur

Posté : 24 mai 2007, 14:39
par newbie
Bonjour,

Je souhaiterai savoir si il y a un moyen d'extraire avec une requete les X plus grand nombre par exemple.

Merci d'avance

Posté : 24 mai 2007, 14:46
par zeus
Il est possible de trier les valeur avec "ORDER BY".
Il est également possible de ne récupérer que x valeurs d'une requête, mais la syntaxe dépent du SGBD que tu utilises. Sous MySQL, il faut utiliser "LIMIT x", sous Oracle un "WHERE rownum <= x"

Il nous faudrait plus de détails sur le SGBD, sur la valeur que tu veux récupérer, pour pouvoir te donner plus de détail

Posté : 24 mai 2007, 14:49
par newbie
alors je suis sous mysql, je voudrai retirer les trois dates les plus recente

merci

Posté : 24 mai 2007, 14:56
par Invité
non en faite se que je veux faire, c'est afficher en gras les enregistrements ayant les trois dates les plus élever. Donc en faite il faudrai que j'extrais la 3eme date en faisant un order by desc

Mais je ne voi pas comment proceder

merci

Posté : 24 mai 2007, 15:51
par zeus
donc, si tu fait un "ORDER BY DESC tonChampDate", tu vas avoir la liste de tes enregistrements, les dates les plus récentes en 1er.

Ensuite, dans ton code PHP, tu mets un compteur qui s'incrémente à chaque ligne, et tant que ce compteur est inférieur à x, tu affiches les lignes en gras
$str_requete = "...";
$o_result = mysql_query($str_requete);

//Initialisation du compteur
$i = 1;
while ($a_result = mysql_fetch_array())
{
    $date = $a_result['tonChampDate'];
    
    //Ici, les 3 1eres lignes sont en gras
    if ($i <= 3) {
        echo "<b>" . $date . "</b><br />";
    } else {
        echo $date . "<br />";
    }

    //Incrémentation du compteur
    $i++;
}

Posté : 24 mai 2007, 15:58
par newbie
ok, je suis d'accord, mais le souci c'est que j'ai deja une requete qui fait afficher les enregistrements, et je veux pas qu'il soit afficher en fonction de la date. C'est pour cette raison que je voulai faire une requeste pour extraire la date, et ainsi j'aurai pu comparer chaque ligne et mettre en gras ceux qui etait egale ou superieur a la date.

Merci

Posté : 24 mai 2007, 16:31
par zeus
dans ce cas là, fait une requête qui retourne les X enregistrements triés par ordre décroissant (avec ORDER BY DESC et LIMIT X)

Stockes ces valeurs dans un tableau et, lors de l'affichage de tes enregistrements, si la date de l'enregistrement est dans le tableau, affiche là en gras ;)

Posté : 24 mai 2007, 17:14
par Invité
la je rame serieusement, jai jamais fait de tableau en php et je peine. Y aurai t il un moyen d'avoir un exemple.
merci

Posté : 24 mai 2007, 17:45
par Cyrano
...jai jamais fait de tableau en php et je peine...
Un tuto peut-être :?: