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

Requêtes MySQL Discussion :

Problème maximum selon critère


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut Problème maximum selon critère
    Bonjour à tous,

    Je galère un peu sur une requête alors si quelqu'un pouvait m'aider ça serait vraiment sympa.
    Je vous explique mon problème, j'ai une table qui contient des identifiants d'image, ainsi que des identifiants de questions.

    Je souhaiterais sélectionner pour chaque image (id_image), et pour chaque question (id_question), la réponse la plus fréquemment donnée et la suivante.
    Par exemple si dans ma table j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id_image   id_question   id_reponse  nb_reponses 
    1          3             5           10
    1          3             6            9
    1          3             4            8
    Pour l'image 1, à la question 3, on a répondu 10 fois la réponse 5, 9 fois la réponse 6 et 8 fois la réponse 4.
    Je souhaiterais pouvoir récupérer les deux premières lignes (les réponses que l'on a répondu 10 et 9 fois).

    Si quelqu'un a une idée, car là moi je ne vois pas du tout.
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Quelle requête avez-vous essayé ?
    Quel est votre SGBD ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    Pour le moment j'ai juste écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      select id_image, id_question, reponse, count(reponse)
        from ma_table
    group by id_image, id_question, reponse
    Je souhaiterais utiliser cette base et écrire une requête en PHP, mais je ne vois pas du tout comment faire en fait.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous n'avez pas répondu sur votre SGBD. C'est important pour la syntaxe.

    Que voulez-vous faire en cas d'égalité, par exemple si votre requête renvoyait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id_image   id_question   id_reponse  nb_reponses 
    1          3             5           10
    1          3             6           10
    1          3             4            8
    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id_image   id_question   id_reponse  nb_reponses 
    1          3             5           10
    1          3             6            9
    1          3             4            9

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    je n'ai pas trop compris les précisions que je pouvais apporter de plus, j'utilise wampserver,une version 5.1 de mysql,et je visualise les résultats de mes requetes soit directement avec phpmyadmin quand c'est une requete simple soit à l'aide de mon programme php

    Pour la réponse concernant l'égalité, ben je souhaiterais prendre les deux premiers ex aequo.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    C'est la première fois que vous parlez de wampserver ou de mysql, et c'était effectivement la réponse que j'attendais !

    Ok pour le premier cas particulier, vous prenez les deux réponses à 10.
    Mais pour le second cas ?

  7. #7
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT id_image, id_question, reponse, count(reponse) as compte
    FROM ma_table
    GROUP BY id_image, id_question
    ORDER BY compte desc
    LIMIT 2

  8. #8
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 054
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT id_image, id_question, reponse, count(reponse) as compte
    FROM ma_table
    GROUP BY id_image, id_question
    ORDER BY compte desc
    LIMIT 2
    Cette requête fonctionne dans le cas bien particulier de l'exemple donné, mais ne renverra pas un résultat "pour chaque image et pour chaque question", ce qui est demandé dans le cas présent .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  9. #9
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 054
    Par défaut
    Autre façon de procéder, sans passer par une sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT t.id_image, t.id_question, t.id_reponse, t.nb_reponses, COUNT(*) AS ordre
    FROM ma_table t
    INNER JOIN ma_table t2 
        ON t2.id_image = t.id_image AND t2.id_question = t.id_question
           AND (t2.nb_reponses > t.nb_reponses 
              OR (t2.nb_reponses = t.nb_reponses AND t2.id_reponse < t.id_reponse)
           )
    GROUP BY t.id_image, t.id_question, t.id_reponse
    HAVING COUNT(*) <= 2
    Je n'ai pas testé, mais ça devrait fonctionner (à peu de choses près )

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. Problème de tri selon critères
    Par JeanMikael dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/07/2007, 19h00
  2. [Etat] Problème de conception d'un état (selon critères)
    Par The_Super_Steph dans le forum IHM
    Réponses: 2
    Dernier message: 06/06/2007, 13h07
  3. Réponses: 7
    Dernier message: 29/06/2006, 11h11
  4. problème recherche multi critère
    Par jeck dans le forum Access
    Réponses: 3
    Dernier message: 16/05/2006, 10h42
  5. Problème recherche sur critère
    Par Sendo dans le forum Access
    Réponses: 1
    Dernier message: 08/03/2006, 00h51

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