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 :

Requete SQL avec comptage


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 44
    Par défaut Requete SQL avec comptage
    Bonjour,

    Voici l’architecture de la base :


    Je voudrais faire une requête qui pour un ProfilID donné dresse la liste de tous les collaborateurs en calculant :

    1. Le nombre de compétences identiques qui sont rencontrés à la fois dans le profil et chez le collaborateur (si aucune 0)

    2. Le nombre total des compétences d'un profil


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CollaborateurID   Nom  Prenom      Nb Compétences / Total Compétences du profil
    ---------------+------+---------+----------------------------------------------
    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    1/
    Le nombre de compétences identiques qui sont rencontrés à la fois dans le profil et chez le collaborateur (si aucune 0)
    Tu peut détailler un peut plus ? tu voudrais avoir le nombre de compétences différentes présente chez un collaborateur, je ne comprend pas trop le sens de la question en rapport avec ce MCD.

    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT COUNT(*) AS nbCompetences
    FROM Profils
    INNER JOIN CompetencesProfils
    ON Profils.ProfilID = Competences.ProfilID;
    Ton MCD manque de cardinalité, ce qui implique que c'est difficile de voir les jointures a faire ni voir le sens de l'information.
    PS : La prochaine fois apporte déjà une solution perso, même si ça marche pas, ça aidera a t'aider, et tu aura plus de réponses

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 44
    Par défaut
    Merci,

    1/ Je voudrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    1. Je me donne un profil
    2. Pour ce profil je regarde les compétences qui sont liées au profil
        2.i Je regarde les collaborateurs qui ont cette compétence
        2.j Si le collaborateur a cette compétence je l'incrémente de 1
             Je passe à la compétence suiavnte

  4. #4
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    hum donc si je comprend bien tu voudrais une résultat du type

    mes compétences :
    comp 1 : 3 collaborateur la possède
    comp 2 : 2
    comp 6 : 1
    comp 14 : 9

    c'est bien cela ?

  5. #5
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT CollaborateurID, nom, prenom, count(competencecollaborateurID) as nbcompcollabo, count(CompetencesProfilsID) as TotCompProf
    FROM Collaborateurs as C, CompetencesCollaborateurs as CC, Competences as Comp, CompetencesProfils as CP, Profils as P
    Where C.CollaborateurID = CC.CollaborateurID
    AND Comp.CompetencesID=CC.CompetencesCollaborateursID
    AND Comp.CompetenceID=CP.COmpetenceID
    AND CP.ProfilID=CP.ProfilID
    GROUP BY CollaborateurID, nom, prenom;
    Alors m'en veut pas pour les jointure je fais comme j'ai appris lol
    A tester

  6. #6
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Personne t'en voudras
    Je préconise plutôt l'utilisation des join en terme d'optimisation et de sens, mais après, c'est pas la fin de monde non plus

Discussions similaires

  1. Requete SQL avec comptage
    Par Bos2007 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/03/2009, 07h12
  2. requete SQL avec valeur max
    Par oeil de nuit dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2006, 08h58
  3. REQUETE SQL AVEC HAVING
    Par juju_77 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 05/08/2005, 09h49
  4. Probleme de requete SQL avec un champs date
    Par ju360modena dans le forum ASP
    Réponses: 5
    Dernier message: 16/06/2005, 11h18
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40

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