[ACCESS] Requetes BDD

Résolu/Fermé
kino - 25 nov. 2014 à 14:15
 kino - 26 nov. 2014 à 09:10
Bonjour,

Je me tourne vers vous concernant des questions sur des requetes dans access.

Je m'explique j'ai 3 tables (Article, CodeBarre, Tarifs) avec une liaison sur le numéro article.

elle sont decliner comme ceci :

Article : N°article, LibelléLong, N°Famille.
CodeBars : N°, N°article, CodeBar
Tarifs : N°,N°Article, PrixTTC

je n'es pas le meme nombre de ligne dans chaque table mais j'aimerais avoir un resultat de requete me permetant d'afficher l'ensemble des article avec une colonne CodeBar et une Prix TTC.

Le probleme est que Access me supprime les articles qui n'ont pas de codeBar et/ou de PrixTTC

Par exemple :
J'ai une base de 300 articles seulement 250 on un codebar et 200 un prix ttc

lors que j'effectue ma requete suivante : SELECT Article.N°article, Article.LibelléLong, Articles.N°Famille, CodeBars.CodeBar, ArticlesTarifs.PrixTTC
FROM (Article INNER JOIN CodeBars ON Article.N°article = CodeBars.N°article) INNER JOIN Tarifs ON Article.N° = Tarifs.N°article
ORDER BY Article.N°article;


J'obtiens les article qui on un codebarre et un prix ttc

je souhaiterais savoir si il etait possible d'effectuer une requete qui me donne l'ensemble de mes articles en ajoutant un champ blanc dans la colonne codebarre et dans celle PrixTTC si il n'y en a pas.

Merci d'avance

1 réponse

yassinozi Messages postés 43 Date d'inscription samedi 10 juillet 2010 Statut Membre Dernière intervention 18 juin 2016 1
Modifié par yassinozi le 25/11/2014 à 15:06
Bonjour,

Le problème que tu as vient de la jointure que tu utilises, dans access comme dans la majorité des SGBD il existe deux types de jointures ( jointure interne ou équivalente et jointure externe ).

La jointure que tu utilises dans ton code est une jointure interne qui affiche les lignes qui existe dans la première , la deuxième et la troisième table. quand le système trouve que l'élément de la table article n'existe pas dans les deux autres tables il le prend pas en compte.ce qui fait que tu reçois que les éléments en commun entre les 3 tables.

Le mot clé INNER JOIN qui veut dire en français jointure interne


Alors pour remédier à ce problème il faut utiliser une jointure externe qui se devise à son tour à deux type ( jointure gauche et jointure droite).

LEFT JOIN & RIGHT JON

Comment faire pour qu'apparaissent dans la table de résultats tous les champs de la table 1, donc de la table gauche. Il faut changer le type de jointure et la transformer en une jointure gauche ( LEFT JOIN )

Dans ce type de jointure nous obtenons une jointure équivalente plus tous les enregistrements orphelins (qui n'ont pu être liés) de la table de gauche, associés à des champs NULL.

Et concernant la jointure droite ( RIGHT JOIN ) il s'agit de l'inverse de ce que je t'ai expliqué la-dessus.

j'espère que mes explications sont claire.

Bon courage
0
Un GRAND Merci a toi :) c'est impec
0