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 :

Trier une requête par un calcul [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut Trier une requête par un calcul
    Bonsoir,

    Voila je viens vous solliciter pour un problème.

    je voudrais trier ma requête de façon a avoir le champ le mieux noter en premier.

    Donc voilà explication :

    table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    `id` int(11) NOT NULL auto_increment,
    `artiste` varchar(20) collate latin1_german2_ci NOT NULL default '0',
    `membre` varchar(20) collate latin1_german2_ci default NULL,
    `vote` int(11) default NULL,
    donc en clair le membre vote pour l'artiste et ceci se mets dans la bdd

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     id  artiste            membre               vote
     1      1       tCiz31l408mmCf0k95CC     4 
     2      2       25r59yv403ob3d609jaf      5 
     3      2       tCiz31l408mmCf0k95CC     4
    en l'occurrence l'artsite avec l'id 2 aurait donc le meilleur vote

    par contre je ne vois pas comment je pourrait faire pour afficher cette artiste grâce a son meilleur vote

    ici je ressort bien sa note totale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // note totale de l'artiste
    $StrStats6 = mysql_query("SELECT SUM(vote) AS OrderTotal FROM `" . ARTIST_VOTE_TABLE . "` WHERE `artiste` = '" . mysql_real_escape_string( $a ) ."'");
    $stats5 = mysql_fetch_object( $StrStats6 );
    $total_note = $stats5->OrderTotal;
    mais comment je peut afficher du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $Str = mysql_query("SELECT * FROM `" . ARTIST_VOTE_TABLE . "` ORDER BY le meilleur vote DESC LIMIT 1");
    $sub = mysql_fetch_array( $Str );
    Quelqu'un pourrait il éclairer ma lanterne

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT artiste, sum(vote) as total
    FROM ma_table
    GROUP BY artiste
    ORDER BY total DESC

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Par défaut
    Regarde un tuto sur le GROUP BY en SQL.

    Indice : tu veux sélectionner les artistes avec pour chacun la somme de leurs votes, donc ton SELECT sera de la forme :
    SELECT id, artiste, SUM(vote) AS vote_count

    edit : bon bah voilà on t'a donné la solution toute faite, une habitude sur ce forum... La solution fournie ne fonctionnera que si le nom d'un artiste est unique, ceci dit (il serait plus sage de grouper sur l'id).

  4. #4
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut
    Oui merci enfaite un simple group by suffisait mais je cherché beaucoup plus loin ^^

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par asdf007 Voir le message
    La solution fournie ne fonctionnera que si le nom d'un artiste est unique, ceci dit (il serait plus sage de grouper sur l'id).
    Pas sur l'id présenté ici qui est un id de vote et non pas d'artiste.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Par défaut
    Citation Envoyé par Mr N. Voir le message
    Pas sur l'id présenté ici qui est un id de vote et non pas d'artiste.
    Hm, probablement en effet, schéma probablement mal pensé dans ce cas (un VARCHAR en clé primaire c'est très peu souvent recommendé, et une telle table d'assoc devrait simplement avoir le couple artiste_id/membre_id en clé primaire).

  7. #7
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Tout à fait

  8. #8
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Par défaut
    Oui c'est vrai que l'id ne sert à rien je vait optimiser ma table apres le script fini ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier une colonne par date
    Par foobar42 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/07/2006, 17h46
  2. executer une requête par liste déroulante
    Par lolo_bob2 dans le forum Access
    Réponses: 2
    Dernier message: 15/05/2006, 11h35
  3. Modifier une requête par des données différente
    Par leloup84 dans le forum Requêtes
    Réponses: 9
    Dernier message: 06/03/2006, 14h23
  4. Comment grouper une requête par mois ?
    Par Le Pharaon dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/06/2005, 12h01
  5. [C#] Trier une Hashtable par les valeurs
    Par Joad dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/04/2005, 16h29

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