Problème de jointure sur une requête

teo13 -  
blux Messages postés 27147 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je me permets de solliciter car j'ai un soucis sur Access.

Je vous explique mon problème :

J'ai 3 tables, une comportant le N° de contrat, une autre le NB de sinistre par contrat et une autre avec le nombre d'appels juridiques.

Lorsque je fais la jointure par rapport au N° de contrat pour afficher par contrat : le nombre de sinistres et le nombre d'appels juridiques en face, cela ne fonctionne pas.

En effet, la jointure affiche uniquement les résultats où les valeurs sont égaux (externe gauche ou externe droite).

C'est à dire imaginons que pour un N° de contrat, il y a 4 sinistres mais aucun appels juridiques, la ligne n'apparait pas sur ma requête.

Que dois-je faire pour que la requête m'affiche toutes les informations de la base en me mettant des 0 si pour un contrat il y a des sinistres mais pas d'appels juridiques ?
Existe t-il une jointure externe gauche ET droite ?

Merci beaucoup pour votre aide.

Cordialement,

Jérôme

1 réponse

blux Messages postés 27147 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
Salut,

access possède l'équijointure (INNER JOIN) mais également la jointure droite (RIGHT JOIN) et gauche (LEFT JOIN).

Avec ça, tu devrais t'en sortir...
0
teo13
 
Salut,

J'ai essayé les 3 types de jointures sur Access à l'aide du mode création mais sans succès !

Il ne m'affiche pas les lignes contenant une valeur NULL dans les tables sinistres ou dans la table des appels juridiques :(

Si un contrat n'a pas de sinistre ou d'appels juridiques ou ne contient qu'une valeur dans les 2, la ligne ne s'affiche pas...
0
blux Messages postés 27147 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
Ta question est sans doute mal posée.
Si tu as des tables qui contiennent, comme tu l'indiques, le nombre de sinistres ou le nombre d'appels, alors ce nombre peut être à zéro et dans ce cas, pas besoin de jointures droite ou gauche, l'équijointure fonctionne correctement.
Tes tables ne seraient-elles pas plutôt des tables de 'listes' d'appels ou de sinistres, expliquant le fait qu'il peut ne pas exister d'entrée pour un contrat ?
0
teo13
 
Merci pour ton retour.

Non mes tables ne sont pas des listes, j'ai juste le N° contrat et en face le nombre de RJ du contrat N° XXXX, idem pour les sinistres

Ce que je voudrais c'est de faire apparaitre

N° Contrat NB sinistres NB RJ
1 3 2
2 4 5
3 10 0

Mais lorsque je fais ma requête, j'obtiens cela :

N° Contrat NB sinistres NB RJ
1 3 2
2 4 5

La ligne du contrat N°3 disparait, a cause du nombre NULL de RJ...
0
blux Messages postés 27147 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
Ton nombre de contrat ne devrait pas être NULL mais à zéro.

Peux-tu mettre le texte de la requête ?

De plus, je m'interroge sur la pertinence de ton modèle de données, car on est dans une relation 1-1, qui devrait en principe faire mettre les données dans la table principale...
0
teo13
 
Voici le texte de la requête :

SELECT [Requête 1 : TEST].[N° Police cie], Sum([Requête 2 : TEST].[SommeDeNB TOTAL]) AS [SommeDeSommeDeNB TOTAL], Sum([Requête 3 : TEST].[SommeDeNB RJ]) AS [SommeDeSommeDeNB RJ]
FROM ([Requête 1 : TEST] INNER JOIN [Requête 2 : TEST] ON [Requête 1 : TEST].[N° Police cie]=[Requête 2 : TEST].[N° Police cie]) INNER JOIN [Requête 3 : TEST] ON [Requête 1 : TEST].[N° Police cie]=[Requête 3 : TEST].[N° Police cie]
GROUP BY [Requête 1 : TEST].[N° Police cie];

J'ai 3 tables, une contenant l'ensemble des N° contrat (N° police cie)
une autre contenant le nombre de sinistre (SommeDeNB TOTAL)
Et la dernière, le nombre de RJ (SommedeNB RJ)

Merci beaucoup pour ton assistance !

Oui je suis d'accord avec toi, mais dans le cas présent, le 0 n'apparait pas ! Access supprime la ligne entière ... :(
0