Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2011, 11h27   #1
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 2
Points : 2
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 :
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 .
Xari_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 11h52   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
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.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 13h44   #3
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 2
Points : 2
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 : ).
Xari_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 14h34   #4
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 2
Points : 2
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 :
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;
Xari_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 15h26   #5
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
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.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 15h38   #6
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 2
Points : 2
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 =).
Xari_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h48.


 
 
 
 
Partenaires

Hébergement Web