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 :

[SQL] Création d'un TOP 5


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
    Mai 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 49
    Par défaut [SQL] Création d'un TOP 5
    Bonjour,

    Je suis étudiants en multimédia, et je dois réaliser un site internet de partage de photos en php/mysql pour un projet, nous travaillons en binome, et d'aprés la description du projet, notre site de base est terminé, mais on a la possibilité d'y rajouter des améliorations afin d'améliorer en retour notre note...

    Parmi toutes les améliorations j'ai choisit l'amélioration notation.

    Le principe:
    Créer un formulaire, ou tout membre ( excepté l'auteur de la photo ) peut voter.
    Afficher la note minimum , la note maximum et la moyenne de chaque photo en fonctions de l'identifiant de la photo.

    Jusque la j'ai réussi a tout faire.
    Le problème c'est qu'il faut aussi que je crée une page ou on peut voir les 5 photos qui ont la meilleur note. Niveau PHP je débute mais niveau MYSQL je m'y connais très peu et j'arrive pas du tout a selectionner ce que je veut pour afficher les 5 photos les mieux notés.


    Quelqu'un pourrait m'aider a faire ma requete car la je m'en sort pas.*

    Voici ma table notation:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE `note` (
      `id_note` int(11) NOT NULL auto_increment,
      `id_photo` int(11) NOT NULL,
      `id_user` int(11) NOT NULL,
      `note_donne` varchar(5) NOT NULL,
      PRIMARY KEY  (`id_note`),
      KEY `id_photo` (`id_photo`,`id_user`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;

    Voici ma table photo :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE `photo` (
      `id_photo` int(11) NOT NULL auto_increment,
      `id_user` int(11) NOT NULL,
      `titre` varchar(30) NOT NULL,
      `description` varchar(250) default NULL,
      `categorie` varchar(30) default NULL,
      `date_depot` varchar(20) default NULL,
      `nom_fic` varchar(75) NOT NULL,
      PRIMARY KEY  (`id_photo`),
      KEY `id_user` (`id_user`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
    Merci beaucoup si quelqu'un passe par là

  2. #2
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut
    SELECT * FROM ma tables ORDER BY note DESC LIMIT 5.
    Goûte ça pour me dire c'est bon ou pas.
    Ceci aura pour effet de classer par note à la limite de 5 enregistrements.

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 49
    Par défaut
    Alors j'ai déja gouter quelque chose comme ca :

    SELECT * FROM note ORDER BY note_donne DESC LIMIT 5.

    Mais le problème c'est que ça va me mettre les 5 meilleurs notes et pas les 5 meilleurs moyennes. Imaginons 2 utilisateurs mette 10 a la même photo , dans mon TOP 5 j'aurais 2 fois la même photo. En faite le Order by est pas mal mais d'abord faudrait faire la moyenne des note_donne en fonction de l'id_photo.

  4. #4
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut
    Pour calculer la moyenne il faut utiliser la fonction AVG

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 49
    Par défaut
    AVG() je connais , je l'ai déja utilisé dans mon site web.
    Mais la moi j'arrive pas a formuler la requete complete qui fait la moyenne des note en fonction de l'id_photo et apres qui utlise le ORDER BY.

    Faut faire 2 requetes ? car la je voit pas du tout

  6. #6
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut
    Tu fais un SUM de toute les notes d'une image Je crois qu'il faut utiliser un group by sur le sum par image. Là tu peux utiliser le limit.

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

Discussions similaires

  1. SQL : Création d'un tableau croisé dynamique
    Par chaporon dans le forum SQL
    Réponses: 11
    Dernier message: 17/05/2017, 21h25
  2. [SQL] Création d'une nouvelle base
    Par balabonov dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 27/09/2006, 15h14
  3. [Requête SQL][ACCESS 2003] - Fonction TOP, DISTINCT
    Par guiguikawa dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 20/06/2006, 11h41
  4. [PL/SQL] Création fichiers txt chez l'utilisateur
    Par NPortmann dans le forum Oracle
    Réponses: 13
    Dernier message: 05/05/2006, 18h46

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