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 et SQL. Discussion :

Jointure non effective [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Jointure non effective
    Bonjour je cherche à faire une requête me permettant d'afficher les services mis en place dans une manifestation précise, j'ai deux tables reliés comme ceci :



    Mon but est donc d'afficher d'une part le nom du service, d'autre part la ou les manifestations sur lesquelles il a travaillé, et au final le nombre d'heures que chaque service a fait pour chaque manifestation.
    chaque salarié à un obligatoirement un service, plusieurs salariés peuvent être dans le même service.

    J'ai fait cette requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT HEURES.nom_manif, HEURES.heure_mont, HEURES.heure_demont, SALARIE.service
    FROM HEURES INNER JOIN SALARIE ON HEURES.nom_sal = SALARIE.nom_sal;
    Mais ma requête ne renvoie aucun résultat, je ne comprends pas pourquoi.

    Merci d'avance .

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Xari_,

    Pour commencer, bravo pour la présentation de ton problème.

    D'autre part, 2 choses :
    • il est fortement déconseillé d'établir une jointure entre des champs textes saisis, donc modifiables : donc de SALARIE vers HEURES, via nom_sal n'est pas correct, d'un point de vue conceptuel. Dans la table HEURES, le champ code_sal (qui, lui, n'est pas modifiable) est-il présent ? ==> si la réponse est non, alors il y a un problème de conception.
    • tu as mis HEURES en primaire (premier FROM) : poses, d'abord, SALARIE, puis HEURE (FROM), et crées un lien avec flèche à droite (LEFT JOIN), pour tes tests. Ensuite, il sera bien temps de peaufiner.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Re,

    En effet je n'ai pas de code_sal dans ma tables "HEURES", je vais déjà régler ce problème en l'ajoutant dans la TABLE et je vais ensuite essayer d'organiser ma requête comme tu me l'as conseillé.

    Merci pour ta réponse : ).

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Re,
    j'ai modifié mes tables, maintenant ça donne ça :



    Donc lorsque je fais une requête avec LEFT JOIN ou RIGHT JOIN ça fonctionne mais ça ne m'affiche que le service, ou alors que le nombre d'heures.

    J'aimerais comprendre pourquoi lorsque je fais "INNER JOIN" Je n'ai plus rien d'affiché :/...

    Ma requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SALARIE.service, Sum(HEURES.heure_mont) AS [Nombre heure montage], Sum(HEURES.heure_demont) AS [Nombre heure démontage]
    FROM SALARIE RIGHT JOIN HEURES ON SALARIE.code_sal = HEURES.code_sal
    GROUP BY SALARIE.service;

  5. #5
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Citation Envoyé par Xari_
    J'aimerais comprendre pourquoi lorsque je fais "INNER JOIN" Je n'ai plus rien d'affiché
    ==> tu viens d'ajouter le champ HEURES.code_sal, non ? N'est-il pas vide ?


    Dans la fenêtre "relation", je te conseille de ne pas faire figurer de flèche. Access permet cette fonctionnalité pour la proposer, par défaut, lors de création de requête. Donc, modifies la relation :
    SALARIE 1---∞ HEURES, via code_sal (et sans flèche).

    D'autre part, passes par l'assistant graphique de création de requête (tu pourras récupérer le code après) :
    - ajoutes la table SALARIE (FROM) ;
    - ajoutes la table HEURES (FROM) ;
    - crées un lien de SALARIE vers HEURES, via code_sal avec flèche à droite (LEFT JOIN) ;
    - sélectionnes les champs que tu veux (SELECT).
    ==> vérifies que tout est OK (sans groupage).

    Ensuite, tu peux modifier cette requête (ou créer une autre requête à partir de celle-ci) :
    - passes en groupage ∑ (GROUP BY) ;
    - sélectionnes SALARIE.service et somme(HEURES.heure_mont) (SELECT).
    ==> tu devrais obtenir ce que tu souhaites.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Re,

    Forcément, j'avais laissé le champ HEURES.code_sal vide :/...
    Maintenant ça fonctionne. J'ai le nom du service ainsi que le nombre d'heure qu'il a effectué.

    Merci =).

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

Discussions similaires

  1. Pb de jointure non equi
    Par fdthierry dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/04/2008, 13h50
  2. Gestion d'erreur non effective
    Par Shypster dans le forum C#
    Réponses: 13
    Dernier message: 31/01/2008, 14h04
  3. Réponses: 28
    Dernier message: 17/01/2008, 18h15
  4. re-compilation de php non effective
    Par julien.63 dans le forum Apache
    Réponses: 3
    Dernier message: 25/07/2006, 08h10
  5. Message Jointure non supportée
    Par Daniel MOREAU dans le forum Access
    Réponses: 6
    Dernier message: 26/02/2006, 18h03

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