Problème de jointure sur une requête

Fermé
teo13 - 31 juil. 2013 à 10:37
blux Messages postés 26703 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 4 mars 2025 - 31 juil. 2013 à 14:55
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 26703 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 4 mars 2025 3 328
31 juil. 2013 à 10:45
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
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 26703 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 4 mars 2025 3 328
31 juil. 2013 à 11:10
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
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 26703 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 4 mars 2025 3 328
31 juil. 2013 à 11:58
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
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