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 :

Requete de tri groupé


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut Requete de tri groupé
    Bonjour,

    je cherche dans le cadre d'un nouveau projet, à faire une requête un peu exotique qui à mon avis n'est pas faisable. Mais je voudrais votre avis avant de chercher une autre solution.

    Une version simplifiée de ma table "ressources"
    id | nom | type | note

    Ce que je veux récupérer :
    les meilleurs ressources (ayant la note la plus elevée) mais groupé par type

    En somme si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM ressources
    ORDER BY note DESC
    LIMIT 50
    Je vais avoir les 50 meilleures ressources mais sans que la requête se soucie du type. J'aurais peut être 30 ressources du type 1, 10 du type 2, et 10 du 3

    Ce que je voudrais c'est avoir le même nombre pour chaque type de ressource. Avoir les meilleurs ressources mais groupées par type.

    Si vous avez une idée, n'hésitez pas ! merci

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    regarde ceci : http://mysql.developpez.com/sources/...-par-categorie
    cela devrait t'aider à batir ta requête

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup, c'est ce dont j'avais besoin.

    Par contre, j'ai essayé de l'adapter à mon problème et ça semble pas donner grand chose pour l'instant. La requête ne renvoie pas d'erreur mais pas de résultat non plus.

    Pour l'instant ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT
    	r.id_ressource, r.intitule, tr.id_type, tr.libelle
    FROM
    	ressource as r
    INNER JOIN
    	type_ressource as tr ON r.id_type = tr.id_type
    WHERE (
        SELECT COUNT(*)
        FROM ressource as r1
        WHERE r1.id_type = r.id_type
        AND r1.note < r.note
    ) < 10
    Une idée ?

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    tu nous donnes une seule table dans ton 1er post et la une seconde apparait?

    bon en reprenant la structure donnée dans ton 1er message,cela devrait donné quelque chose dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT
    	r.*
    FROM
    	ressource AS r
    WHERE (
        SELECT COUNT(*)
        FROM ressource AS r1
        WHERE r1.type = r.type
        AND r1.note < r.note
    ) < 10

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Cybher Voir le message
    tu nous donnes une seule table dans ton 1er post et la une seconde apparait?
    Oui c'était pour simplifier les choses mais j'avais une table type_ressource en fait qui fait la correspondance entre id et nom du type.

    Merci beaucoup pour ton aide en tout cas. la requête marche nikel !

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

Discussions similaires

  1. Requete COUNT + tri
    Par TraxX dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/06/2006, 22h40
  2. Requete de tri par mois
    Par Jay45 dans le forum Access
    Réponses: 1
    Dernier message: 03/04/2006, 13h57
  3. requete et tri dans etats
    Par flo456 dans le forum IHM
    Réponses: 3
    Dernier message: 22/12/2005, 11h02
  4. requete avec tri sur date erronée
    Par olivll dans le forum Access
    Réponses: 11
    Dernier message: 20/10/2005, 15h45
  5. requete avec jointure & group by
    Par de LANFRANCHI dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/07/2004, 14h31

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