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 :

Classement des meilleurs resultats [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
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Par défaut Classement des meilleurs resultats
    Bonjour,

    Prenons le cas d'un site hébergeant plusieurs forum , je voudrai extraire les 3 forums ayant le plus d'activité.
    On suppose une table forum, une table user rattachée au forum qu'il créé, et une table post rattachée au forum.

    Ce qui nous amène a faire une sorte de moyenne où l'on diviserai le nombre de post par le nombre d'utilisateur.

    EXEMPLE:

    Forum 1 : 25 post, 250 users => si l'on suis la formule on se retrouve avec un résultat de 0.10
    Forum 2 : 250 post, 25 users => 10
    Forum 3 : 18 post, 78 users =>0.23
    Forum 4 : 58 post, 2 users => 29
    Forum 5 : 65 post, 45 users =>1.44
    Forum 6 : 89 post, 13 users=> 6.84

    Voila ce que je voudrai obtenir :
    On afficherai donc le nom du forum ayant le meilleur résultat.
    1 : Forum4
    2 : Forum2
    3 : Forum6

    Une petite idée pour me mettre sur la piste? Comment rédiger ma requête?
    Merci d'avance,

    Jerome

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 817
    Billets dans le blog
    14
    Par défaut
    Crée une requête SQL qui va compter le nombre de posts et d'utilisateurs puis en calculer le ratio.

    Si tu ne vois pas comment faire, regarde le cours de SQLPro et poste ici ce que tu auras essayé. C'est plus constructif que de te donner la solution toute faite.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Crée une requête SQL qui va compter le nombre de posts et d'utilisateurs puis en calculer le ratio.

    Si tu ne vois pas comment faire, regarde le cours de SQLPro et poste ici ce que tu auras essayé. C'est plus constructif que de te donner la solution toute faite.
    Oui merci, je n'attend pas de réponse toute faite mais juste encore une précision...
    Est-ce que je peux extraire les résultats directement en SQL ou il va falloir faire des opérations en PHP?

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 817
    Billets dans le blog
    14
    Par défaut
    Une seule requête SQL devrait pouvoir te sortir la liste des forum dans l'ordre souhaité. Tu ajouteras les numéros de classement en PHP à la présentation des résultats, ce sera plus simple.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Par défaut
    Voir ci dessous...
    Pourquoi ai-je le meme nombre dans a1 et dans a2?
    Je suis surement sur la mauvaise piste :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT count(sujet.id_sujet) as a1, count(post.id_post)  AS a2, `forum`.`nom_foum`, count(sujet.id_sujet)/count(post.id_post) as a3
    FROM  `sujet`
           INNER JOIN `forum` ON `forum`.`id_forum` = `sujet`.`id_ref_forum`
           INNER JOIN `post` ON `post`.`id_ref_sujet` = `sujet`.`id_sujet`
     
    GROUP BY `forum`.`nom_forum`
    order by a3 ASC
    LIMIT 3

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 817
    Billets dans le blog
    14
    Par défaut
    Comme tu fais une jointure entre plusieurs tables, tu te retrouves avec ce genre de jeu de résultat :
    id_sujet / id_post
    1 / 1
    1 / 2
    1 / 3
    2 / 4
    2 / 5
    2 / 12
    3 / 6
    3 / 8

    Pour ne pas compter un sujet plusieurs fois, il faut ajouter DISTINCT au COUNT :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT count(DISTINCT sujet.id_sujet) as a1, 
    	count(post.id_post)  AS a2, 
    	forum.nom_forum, 
    	count(DISTINCT sujet.id_sujet)/count(post.id_post) as a3
    FROM  sujet
    INNER JOIN forum ON forum.id_forum = sujet.id_ref_forum
    INNER JOIN post ON post.id_ref_sujet = sujet.id_sujet
    GROUP BY forum.nom_forum
    order by a3 ASC
    LIMIT 3
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Finances Online sort le classement des meilleures technologies de 2013
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 7
    Dernier message: 20/01/2014, 11h11
  2. Réponses: 5
    Dernier message: 08/10/2013, 23h20
  3. Réponses: 10
    Dernier message: 07/04/2009, 20h57
  4. Classement des fichiers
    Par php_de_travers dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2006, 10h20
  5. Classement des langages
    Par trattos dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 07/12/2005, 12h09

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