Comment selectionner un chiffre mini et maxi d'une base?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par tryan, 4 Septembre 2008.

  1. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Bonjour

    J'essaye en vient de récupérer le plus petit chiffre et le plus grand dans ma basse sans succès :? .

    Soit une base nommé "Nombre" comportant 10 champs nommé "chiffre" (chiffre1, chiffre2,etc..)
    ------Nombre------
    chiffre1--chiffre2--
    --300-------600---

    Quelle est le style de la requête à effectuer avec une boucle WHILE pour sortir uniquement le plus petit chiffre et le plus grand svp ?
    Merci
     
  2. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Me semble que t'as une base vraiment mal foutue hein tryan :mrgreen: car un simple MIN et MAX sur un seul champ d'une seule table aurait suffit normalement.
     
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 574
    J'aime reçus:
    32
    Ultra facile

    $sql ="SELECT MIN(chiffre), MAX(chiffre) FROM nom_table";

    // $conn est l'identificateur rendu par mysql_connect()
    $res = @mysql_query($sql, $conn);
    if(!$res)
    {
    Message d'erreur, peu probable
    @mysql_close($conn);
    exit;
    }
    $row = @mysql_fetch_row($res);
    if(!$row)
    {
    // Message d'erreur, peu probable.
    @mysql_close($conn);
    exit;
    }
    $min_chiffre = $row[0];
    $max_chiffre = $row[1];


    Pas plus compliqué, non ?

    Une seule requête SQL suffit. Encore faut-il savoir un peu de SQL...

    Pour s'informer sur la syntaxe de SQL, faire: 'info mysql' en ligne de commande ( sous Linux ), ou bien je suppose qu'il y a un aide sous Windows.

    Sinon, la bibliographie de SQL est riche...

    Bien à toi.

    Amicalement.

    Jean-François Ortolo
     
  4. BadProcESs
    BadProcESs WRInaute passionné
    Inscrit:
    28 Juillet 2003
    Messages:
    1 821
    J'aime reçus:
    0
    Applique un tri simple. Je ne sait pas en quel language tu code, mais algorithmiquement ca donne :

    Code:
    Variable min = 0
    Variable Max = 0
    
    Boucle chiffre
      Si (chiffre < min Ou chiffre = 0) Alors min = chiffre
      Si (chiffre > max) Alors max = chiffre
      Suivant
    FinBoucle
     
  5. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    ortolojf il vient de dire qu'il voulait le plus petit et le plus grand sur tout ses champs en même temps :D Ou alors j'ai rien capté de ce qu'il a dit

    Après relecture, oui comme badprocess :) Mais c'est bourrin quand même. T'aurais eu une meilleur structure de tes tables, c'était fait en une seule requête.
     
  6. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 574
    J'aime reçus:
    32
    Bonjour Yoyo

    Je te prie de m'excuser, je n'avais pas fait attention.

    La logique ne voudrait-elle pas, qu'il change d'architecture de données, en copiant l'ancienne table versune nouvelle table à un seul champ chiffre ?

    Bien à vous.

    Amicalement.

    Jean-François Ortolo
     
  7. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Merci de vos réponses :).

    YoyoS, tu as très bien compris ^^.
    Tu dis que ma base est mal foutue ... tu as surement raison mais je fais au mieux ^^.

    Bon, je ne connaissais pas MIN() et MAX() mais en quoi ma base est mal foutue ?

    En faite, ma base "Nombre" contient en réalité des prix en fonction de dates.
    Donc chaque date (debut/fin) comprend forcement 1 prix. Si 10 dates -> 10 prix soit prix1, prix2,prix3, etc ....jusqu'à prix10 correspondant à la 10 ieme dates saisie ... je ne vois pas comment j'aurais pu faire autrement ?
     
  8. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    le probleme c'est que si tu as plusieurs champs "chiffre" qui ont un lien ensemble et une même signification, c'est pas normal. S'il existe un lien entre eux, tu dois créer une table à part avec un seul champ "chiffre".
     
  9. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    J'avoue avoir du mal à suivre là !
    Si je créé une table à part, il me faudra forcément mes 10 champs prix1 à prix10 avec un champs id.

    id- prix1-prix2- prix3-prix4-prix5 ..etc
    9--777---200---650---45---45------ect
    10--757---500---550---455---455------ect

    Que la table ci dessus soit à part ou non, je ne vois pas ce que sa change puisque sa structure principale ne change pas ?
    Il me faut d'une façon ou d'une autre 10 tarifs correspondants à 10 dates correspondants eux mêmes à 1 id.

    BadProcESs
    Code:
    Boucle chiffre
      Si (chiffre < min Ou chiffre = 0) Alors min = chiffre
      Si (chiffre > max) Alors max = chiffre
      Suivant
    FinBoucle
    chiffre correspond à mes variables $prix1 à $prix10 et ... bref, je pige rien :?
     
  10. forummp3
    forummp3 WRInaute passionné
    Inscrit:
    8 Février 2004
    Messages:
    1 508
    J'aime reçus:
    0
    pour ton cas, une bonne structure aurrait etait comme ca:

    table(prix,type_prix)

    avec type prix tes "chiffre1","chiffre2","chiffre3", etc)


    comme ca, tu pourrai faire:

    select max( prix),min(prix) group by type_prix
     
  11. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Heuuuuu .... sa me saoule beacause je capte pas!

    En gros sa ferait un truc du genre:

    ----------table----------
    id-------prix-----type_ prix-----
    1--------100-------prix1
    1--------65---------prix2
    1--------988-------prix3
    1--------456-------prix4
    1--------4545-----prix5
    1--------85-------prix6
    1--------232-------prix7
    1--------213-------prix8
    1--------123-------prix9
    1--------45-------prix10
    2--------896-------prix1
    2--------64-------prix2
    2--------654-------prix3
    etc...

    La requête:
    $id= id demandé
    select max( prix),min(prix) FROM table WHERE id = $id
    c'est sa ou je suis encore à côté de la plaque ?
     
  12. BadProcESs
    BadProcESs WRInaute passionné
    Inscrit:
    28 Juillet 2003
    Messages:
    1 821
    J'aime reçus:
    0
    "chiffre" correspond au tableau (liste) de tous tes nombres réunis.
    Ainsi, dans ton exemple :

    "chiffre" == {300, 600}
     
  13. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    Arf ouais tryan ta base me semble pas tip top.

    Si c'est vraiment un prix lié à une date et ce prix lié à un produit :
    Table Produit
    id, nom, ...
    Table prixProduit
    idProduit, date, Prix

    Simple et tu peux sélectionner le min et max en une seule requête pour un produit donné.
     
  14. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Yes Bacteries, on me la déjà dit ^^ alors je recommence ..encore ..et je pose des questions ..encore ^^.

    Nouvelle table, nouvelle incompréhension:

    --------TARIF---------
    id-----prix-----type_prix
    9------883------prix1
    9------787-------prix2
    9------10063----prix3
    9------658------prix4
    9------11111-----prix5
    9-------45------prix6

    Requête:
    SELECT min( prix ) , max( prix ) FROM `TARIF` WHERE id =9

    Résultat:
    min(prix)--max(prix)
    --10063 -----883

    Sa ne devrait pas être 11111 et 45 normalement ?
     
  15. forummp3
    forummp3 WRInaute passionné
    Inscrit:
    8 Février 2004
    Messages:
    1 508
    J'aime reçus:
    0
    t'es sur que toute tes ligne sont id=9 ?!

    Essaye la requete en enlevant where id_=9 pour voir le resultat
     
  16. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Oui, id=9 partout !

    requête SQL:
    SELECT min( prix ) , max( prix )
    FROM `TARIF`

    Résultat:
    min( prix ---max( prix )
    10063-------- 883

    Je ne pige pas ^^ .
     
  17. forummp3
    forummp3 WRInaute passionné
    Inscrit:
    8 Février 2004
    Messages:
    1 508
    J'aime reçus:
    0
    et ta colone est bien "int" ?

    fait nous un copier/coller de ta structure avec les données (via phpmyadmin)
     
  18. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Code:
    -- Structure de la table `TARIF`
    -- 
    
    CREATE TABLE `TARIF` (
      `id` int(11) NOT NULL,
      `prix` varchar(250) character set latin1 collate latin1_general_ci NOT NULL,
      `type_prix` varchar(150) character set latin1 collate latin1_general_ci NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
    
    -- 
    -- Contenu de la table `TARIF`
    -- 
    
    INSERT INTO `TARIF` (`id`, `prix`, `type_prix`) VALUES (9, '883', 'prix1'),
    (9, '787', 'prix2'),
    (9, '10063', 'prix3'),
    (9, '658', 'prix4'),
    (9, '11111', 'prix5'),
    (9, '45', 'prix6');
    
    
     
  19. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    Essaye ça et recommence :
    ALTER TABLE `tarif` CHANGE `prix` `prix` INT( 250 ) NOT NULL

    Ton prix c'est un chiffre pas une chaine de caractère, un min se fait sur un chiffre / nombre.
     
  20. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Une corde svp ... je viens de passer presque la journée pour un INT(250) :roll: .

    Merci Bacteries et merci pour vos réponses :wink: et ....... à bientôt .
     
  21. forummp3
    forummp3 WRInaute passionné
    Inscrit:
    8 Février 2004
    Messages:
    1 508
    J'aime reçus:
    0
    n'oublie pas que c'est en faisant des conneries qu'on apprend :D
     
  22. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Comment oublier puisque je fais que sa ^^ .... hein YoyoS !
     
Chargement...
Similar Threads - selectionner chiffre mini Forum Date
Sélectionner un chiffre entre 2 bornes Développement d'un site Web ou d'une appli mobile 10 Juin 2008
Sélectionner les 5 plus proches produits Développement d'un site Web ou d'une appli mobile 11 Décembre 2021
Selectionner ligne tableau a partir d'une liste déroulante Développement d'un site Web ou d'une appli mobile 25 Janvier 2017
"Le répertoire racine local n'existe pas, veuillez en sélectionner un autre..."" Développement d'un site Web ou d'une appli mobile 18 Novembre 2016
Sélectionner une partie d'URL avec une RegEx Google Analytics 9 Juillet 2014
CSS : sélectionner les images flottantes Développement d'un site Web ou d'une appli mobile 15 Février 2013
[MySQL] sélectionner la dernière note pour chaque élève en une seule requète ? Développement d'un site Web ou d'une appli mobile 12 Avril 2012
Sélectionner une valeur dans plusieurs listes déroulantes Développement d'un site Web ou d'une appli mobile 8 Avril 2010
selectionner ou deselc. seulement un groupe de checkbox Développement d'un site Web ou d'une appli mobile 13 Novembre 2009
sélectionner un F.A.I AdWords 7 Juillet 2009
selectionner plusieurs tableau en meme temps Développement d'un site Web ou d'une appli mobile 8 Avril 2009
Htaccess : sélectionner le hotlinking autorisé ? Développement d'un site Web ou d'une appli mobile 29 Janvier 2009
Selectionner des "id" dans un ordre choisie? Développement d'un site Web ou d'une appli mobile 4 Décembre 2008
Requete sql, sélectionner un champ vide Développement d'un site Web ou d'une appli mobile 30 Novembre 2008
Comment et ou selectionner les meilleurs annuaires? Annuaires et moteurs 18 Janvier 2008
Tout sélectionner dans une BDD Développement d'un site Web ou d'une appli mobile 11 Mai 2007
sélectionner le contenu d'un calque sous Photoshop CS2 Développement d'un site Web ou d'une appli mobile 7 Juillet 2006
Selectionner un champs non vide dans une base de données Développement d'un site Web ou d'une appli mobile 27 Mars 2006
Page fr & en : faut-il sélectionner la langue préférée ? Débuter en référencement 19 Novembre 2005
Comment sélectionner automatiquement un champ de saisie ? Administration d'un site Web 7 Juin 2003