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

Langage SQL Discussion :

Matériel le plus utilisé


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Matériel le plus utilisé
    Bonjour,

    J'ai une table sql reunion_materiel qui contient 2 champs:
    id_materiel --> id de 1 a 6 pour les différents équipements (video projecteur, pc, télé...)
    id_reunion --> qui affiche l'id de la réunion créée dans la table reunion

    Cette table me permet de lier les materiel aux différentes réunions prévues.

    Ce que je désirerais faire maintenant c'est récuperer le materiel le plus utilisé. J'ai pour cela fait la requete suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `Materiel_id` AS matos FROM reunion_materiel GROUP BY `Materiel_id` ORDER BY COUNT(`Materiel_id`) DESC LIMIT 1
    voici le resultat: Nom : result.jpg
Affichages : 123
Taille : 12,2 Ko

    Mais le resultat ne me conviens pas car si je fait la requete suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `Materiel_id` AS matos, `Reunion_id` FROM reunion_materiel GROUP BY `Reunion_id` ORDER BY `Materiel_id`
    cette requete va me sortir tous les resultats de la table, j'ai le resultat suivant

    Nom : result 2.jpg
Affichages : 110
Taille : 23,7 Ko

    Donc normalement le materiel_id le plus utilisé est le 2. La premiere requete semble donc bonne. Mais si j'affine, le second materiel le plus utilisé devrait etre le 1, or, avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `Materiel_id` AS matos FROM reunion_materiel GROUP BY `Materiel_id` ORDER BY COUNT(`Materiel_id`) DESC LIMIT 0,8
    j'ai ce resultat:
    Nom : result 3.jpg
Affichages : 130
Taille : 17,3 Ko
    et ce resultat me semble faux.

    Quelqu'un pourrait il m'aider??

    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Si j'ai bien compris, pour connaître l'utilisation de chaque matériel il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  id_materiel
        ,   COUNT(id_reunion)   AS  usage
    FROM    reunion_materiel
    GROUP BY id_materiel
    ;
    De là, pour faire un classement en fonction de l'usage (en partant du plus utilisé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT  rmt.id_reunion
        ,   rmt.id_materiel
    FROM    reunion_materiel    rmt    
        INNER JOIN
            (   SELECT  id_materiel
                    ,   COUNT(id_reunion)   AS  usage
                FROM    reunion_materiel
                GROUP BY id_materiel
            )   usg
            ON  usg.id_materiel = rmt.id_materiel
    ORDER BY usg.usage DESC
    ;
    Pour identifier le matériel le plus utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT  id_materiel
    FROM    reunion_materiel
    GROUP BY id_materiel
    HAVING  COUNT(id_reunion)
            =   (   SELECT  MAX(usage)
                    FROM    (   SELECT  id_materiel
                                    ,   COUNT(id_reunion)   AS  usage
                                FROM    reunion_materiel
                                GROUP BY id_materiel
                            )   cnt
                )
    ;
    Et les réunions qui utilisent ce matériel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT  id_reunion
    FROM    reunion_materiel     
    WHERE   id_materiel IN   
            (   SELECT  id_materiel
                FROM    reunion_materiel
                GROUP BY id_materiel
                HAVING  COUNT(id_reunion)
                        =   (   SELECT  MAX(usage)
                                FROM    (   SELECT  id_materiel
                                                ,   COUNT(id_reunion)   AS  usage
                                            FROM    reunion_materiel
                                            GROUP BY id_materiel
                                        )   cnt
                            )
            )
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut merci
    Merci pour cette réponse rapide et claire.

    Je teste cela au plus vite

    Merci encore

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut parfait
    Parfait c'est tout a fait ce qu'il me fallait.

    Merciiiii

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

Discussions similaires

  1. Comment supprimer un evenement plus utilisé?
    Par badack dans le forum NetBeans
    Réponses: 2
    Dernier message: 21/04/2008, 14h13
  2. Réponses: 8
    Dernier message: 10/06/2007, 00h43
  3. petite question : Quel est le compilateur (EDI) C++ le plus utilisé en entreprise
    Par jeremy13 dans le forum Choisir un environnement de développement
    Réponses: 7
    Dernier message: 12/12/2006, 11h43
  4. L'environnement de développement le plus utilisé
    Par TheDarkLewis dans le forum Windows
    Réponses: 5
    Dernier message: 16/09/2004, 20h08

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