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

MS SQL Server Discussion :

REQUETE SQL AVEC HAVING


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut REQUETE SQL AVEC HAVING
    Bonjour j'ai un gros soucis sur une requête, en fait j'aimerais faire un outil de gestion des collaborateurs d'une société, et qui permettrai de trier les collaborateurs par profils, et par compétences.

    Les compétences sont du genre : Java, Access, SQL SERVER etc ...

    Je veux faire un tri par exemple, sur tout les gens qui savent faire du access et du java, mais la reqûete ne renvoie pas de résultats, alors que certaines personnes devraient être concernées.

    Le principe est relativement simple, dans la table avoir_competences, sont référencés les matricule (identifiant) des collaborateurs, et associé a chaque matricule, on retrouve l'identifiant de la compétence du cv, qui pointe sur la compétence présente dans Est_synonyme.

    Dans est_synonyme, on a l'identifiant du générique, qui fait référence a la compétence générique présente Génerique_ref, le nom de la compétence , et son identifiant.

    La compétence générique sers à regrouper plusieurs compétences de la table est_synonyme , en une seule, je m'explique, imaginons, je trouve dans plusieurs cv différents access 2000 , access vba 97, access, ms access etc ... je veux regrouper tout sous une entité générique ACCESS, génrique_ref va me permettre de faire cela.

    voila la requête que j'essaye de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT [Etat_civil].matricule,[Etat_civil].NOM_collab,[Etat_civil].Prenom_collab,[profils].statut_mission ,[profils].id_ism3,[profils].id_metier,[profils].id_ra FROM [Etat_civil],[profils],[contrats],Avoir_Competences, Génerique_ref, Est_synonyme
     
    WHERE [Etat_civil].matricule = [profils].matricule 
    AND [Etat_civil].flag_actif=1 AND [profils].flag_actif=1 
    AND [contrats].matricule=Etat_civil.matricule 
    AND [contrats].flag_actif=1 
    AND Avoir_Competences.matricule = Etat_civil.matricule 
    AND Est_synonyme.id_competence_CV = Avoir_Competences.id_competence 
    AND Génerique_ref.id_generique = Est_synonyme.id_generique 
    AND Est_synonyme.id_generique IN('1','28')
    GROUP BY [Etat_civil].matricule,[Etat_civil].NOM_collab,[Etat_civil].Prenom_collab,[profils].statut_mission ,[profils].id_ism3,[profils].id_metier,[profils].id_ra ,Est_synonyme.id_generique 
    HAVING COUNT(DISTINCT (Est_synonyme.id_generique)) = 2 ORDER BY NOM_collab
    script de jeux de test ici :

    http://da.smiffys.free.fr/sqlserver/base_sqlserver.zip

  2. #2
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    personne pour m'aider ? sniff :'(

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Et si tu commençais par réécrire ta requête de façon plus lisible :
    1) syntaxe normée pour les jointure (INNER JOIN, LEFT OUTER JOIN, etc.)
    2) indentation
    3) ne fournir les scripts que des tables nécessaires
    4) ajouter un jeu d'essais (sous la forme d'insert)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    salut médiat,

    tu m'avais aidé, il ya longtemps il me semble sur la même requête, sur access elle marche, et depuis que j'ai migré sur sql server, et ben la requête ne passe plus du tout, avec les mêmes données en entrée.

    Moi je veux bien filer les script insert de mes tables, mais ça contient des données plutot sensible alors bon, je vais pas divulger le salaire des gens sur le net lol

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    les jeux de tests sont à cette adresse :

    http://da.smiffys.free.fr/sqlserver/base_sqlserver.zip

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Promis, je regarde demain (vive les RTT ), j'espère que tu as caviardé les données .
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    oui j'ai 10 collaborateurs bidon, qui ont des compétences dans tous les sens, que du bonheur !

    en tout cas merci de t'intéresser à mon probléme !


    un ptit exemple : avec les compétences (id_generique) 1 et 10 , access et amc designer, tu devrais sortir normalement les collabs TEST2 et TEST7

    voila

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Avec la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT ec.matricule, ec.Nom_collab, ec.Prenom_collab, p.statut_mission, p.id_ism3, p.id_metier,id_ra 
    FROM Etat_civil ec INNER JOIN Profils  p           ON ec.matricule     = p.matricule
                       INNER JOIN contrats c           ON ec.matricule     = c.matricule
                       INNER JOIN Avoir_Competences ac ON ec.matricule     = ac.matricule
                       INNER JOIN Est_synonyme es      ON ac.id_competence = es.id_competence_CV
                       INNER JOIN Génerique_ref gr     ON es.id_generique  = gr.id_generique
    WHERE ec.flag_actif    = 1 
      AND p.flag_actif     = 1 
      AND c.flag_actif     = 1 
      AND es.id_generique IN ('1','28') 
    GROUP BY ec.matricule, ec.NOM_collab, ec.Prenom_collab, p.statut_mission , p.id_ism3, p.id_metier, p.id_ra 
    HAVING COUNT(DISTINCT (es.id_generique)) = 2 ORDER BY NOM_collab
    je récupère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    6	  TEST1	TEST1	NULL	AD5	NULL	??
    7	  TEST2	TEST2	NULL	NULL	NULL	??
    220	TEST7	TEST7	NULL	NULL	NULL	??
    Est-ce ce que tu attends ?

    J'ai supprimé id_generique dans le GROUP BY
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  9. #9
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    La grande classe Médiat , franchement

    Merci beaucoup , ça marche au poil , c'est exactement ça que je voulais !

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

Discussions similaires

  1. Requete SQL avec GROUP BY et HAVING
    Par breynard dans le forum Langage SQL
    Réponses: 7
    Dernier message: 19/11/2009, 12h56
  2. Requete SQL avec Rand()
    Par leloup84 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/02/2006, 17h41
  3. requete SQL avec valeur max
    Par oeil de nuit dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2006, 09h58
  4. Probleme de requete SQL avec un champs date
    Par ju360modena dans le forum ASP
    Réponses: 5
    Dernier message: 16/06/2005, 12h18
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 15h40

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