IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Retourner les plus petites valeurs d'une table


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut Retourner les plus petites valeurs d'une table
    Bonjour,

    Je me permets de vous soumettre mon problème, d'avance merci pour votre aide

    Ainsi, je souhaiterais retourner les 3 plus petites valeurs d'une table et par membre de cette façon :


    membre 1, note == 0, coef == 2
    membre 1, note == 1, coef == 1
    membre 1, note == 2, coef == 3

    ---------------------------------

    membre 2, note == 1, coef == 1
    membre 2, note == 1, coef == 1
    membre 2, note == 2, coef == 1

    ----------------------------------

    membre 3, note == 3, coef == 2
    membre 3, note == 4, coef == 1
    membre 3, note== 4, coef == 1

    ensuite, je souhaiterais multiplier chaque note par le coefficient associé et additionner les résultats obtenus de telle sorte :

    membre1, total == 7
    membre2, total == 4
    membre3, total == 14

    ...



    pour l'instant avec la fonction min(), je n'arrive à obtenir qu'une seule valeur ...

    Voici ma table "table1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    --
    -- Structure de la table `table1`
    --
     
    CREATE TABLE IF NOT EXISTS `table1` (
      `id` int(11) NOT NULL auto_increment,
      `membre` varchar(80) NOT NULL,
      `coef` varchar(2) NOT NULL,
      `note` varchar(2) NOT NULL,
      `date` datetime NOT NULL default '0000-00-00 00:00:00',
     
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM;
    Merci

  2. #2
    jnore
    Invité(e)
    Par défaut
    Si j'ai bien compris tu pourrais faire comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        SELECT membre, min(note) as note_mini,sum(note*coef) as total
        FROM table
        GROUP BY membre
    Dernière modification par jnore ; 26/10/2008 à 14h16.

  3. #3
    jnore
    Invité(e)
    Par défaut
    Je viens de me rendre compte de cela mais, tes colonnes 'note' et 'coef' sont en varchar.
    Je pense qu'il serait judicieux de les passe en integer.

    Cdlt

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut
    Merci de ta réponse rapide et conseils,

    Concernant ta requête, comment l'exploiter afin de retenir les 3 plus petites valeurs (par membre), lesquelles (les 3 plus petites valeurs par membre) seront multipliées par leur coefficient respectif et additionnées afin d'obtenir un total pour chaque membre...

    tu vois ?


    Exemple pour :

    membre | note | coef |

    membre1 | 1 | 2

    membre1 | 2 | 5

    membre1 | 5 | 3

    membre1 | 2 | 1

    membre1 | 3 | 1

    on retient les 3 plus petites notes (en rouge) pour obtenir pour membre1 un total de 14 après multiplication coef et addition

    Merci d'avance et mes excuses pour cet énoncé peu clair ...

  5. #5
    jnore
    Invité(e)
    Par défaut
    Ok, j'avais mal lu.

    Je regarde.

  6. #6
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    en attendant que jnore termine de regarder je te propose une solution

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT membre, note, coef, SUM(note) as 'somme'
    FROM table1
    ORDER BY note ASC
    LIMIT 3;

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT membre, SUM(note * coef) as 'total'
    FROM table1
    GROUP BY membre
    ORDER BY total
    LIMIT 3;

Discussions similaires

  1. [MySQL] récuperer la plus grosse valeur d'une table
    Par mrsoyer dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/05/2008, 17h22
  2. isoler les 2 plus grandes valeurs d'une liste
    Par marlene.ln dans le forum Access
    Réponses: 3
    Dernier message: 29/01/2007, 10h22
  3. Réponses: 4
    Dernier message: 11/09/2006, 17h58
  4. Réponses: 5
    Dernier message: 12/08/2006, 00h36
  5. [MySQL] Sortir les valeurs d'une table
    Par Florent06 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/01/2006, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo