Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requête sql en vba : INNER JOIN / OUTER JOIN

7 réponses
Avatar
Thierry Euzenot
Bonjour à tous,

Voilà mon problème, je dois faire des requêtes un peu complexes implicant
trois tables ayant des liens INNER JOIN et OUTER JOIN et je n'arrive pas à
les écrire correctement.

La base de données est une base Access 97, la version d'excel utilisée est
Excel 2000, et j'utilise Microsoft Jet 4.0 ainsi que le MDAC 2.8.

Deux problèmes distincts en fait :
1) Je dois concaténer deux jointures internes. Tant que je n'ai qu'une
jointure interne je n'ai aucun problème, mais je n'arrive pas à indiquer la
seconde jointure...
Voilà la requête que j'ai écrite et qui ne fonctionne pas, j'aimerai que
vous m'indiquiez où je me suis trompé et la solution si possible :
Rsql = "SELECT FournisseurArticle.CodeArticle, Fournisseur.Nom, Pays.nom,
FournisseurArticle.UniteAchat FROM FournisseurArticle INNER JOIN Fournisseur
ON FournisseurArticle.CodeFournisseur = Fournisseur.Code INNER JOIN Pays ON
Fournisseur.Pays = Pays.Code;"
Nota : La seconde jointure doit se faire entre la table "Fournisseur" et la
table "Pays"

L'erreur indiquée est "Erreur de syntaxe dans la clause FROM"

Jai aussi essayé (entre autre) :
Rsql = "SELECT FournisseurArticle.CodeArticle, Fournisseur.Nom, Pays.nom,
FournisseurArticle.UniteAchat FROM FournisseurArticle INNER JOIN Fournisseur
ON FournisseurArticle.CodeFournisseur = Fournisseur.Code, Fournisseur INNER
JOIN Pays ON Fournisseur.Pays = Pays.Code;"
Mais là il me met que j'ai deux fois "Fournisseur" dans la clause FROM et
que ce n'est pas possible.

2) Je n'arrive pas à écrire une requête contenant une jointure externe. J'ai
tenté de mettre LEFT OUTER JOIN... ON et ça ne marche pas. Donc si quelqu'un
peut m'indiquer la syntaxe d'une jointure externe qui fonctionne ce serait
super !

Thierry

7 réponses

Avatar
Thierry Euzenot
Personne ne peut m'aider ?

"Thierry Euzenot" <thierry.euzenot*arobase*gmail.com> a écrit dans le
message de news:
Bonjour à tous,

Voilà mon problème, je dois faire des requêtes un peu complexes implicant
trois tables ayant des liens INNER JOIN et OUTER JOIN et je n'arrive pas à
les écrire correctement.

La base de données est une base Access 97, la version d'excel utilisée est
Excel 2000, et j'utilise Microsoft Jet 4.0 ainsi que le MDAC 2.8.

Deux problèmes distincts en fait :
1) Je dois concaténer deux jointures internes. Tant que je n'ai qu'une
jointure interne je n'ai aucun problème, mais je n'arrive pas à indiquer
la seconde jointure...
Voilà la requête que j'ai écrite et qui ne fonctionne pas, j'aimerai que
vous m'indiquiez où je me suis trompé et la solution si possible :
Rsql = "SELECT FournisseurArticle.CodeArticle, Fournisseur.Nom, Pays.nom,
FournisseurArticle.UniteAchat FROM FournisseurArticle INNER JOIN
Fournisseur ON FournisseurArticle.CodeFournisseur = Fournisseur.Code INNER
JOIN Pays ON Fournisseur.Pays = Pays.Code;"
Nota : La seconde jointure doit se faire entre la table "Fournisseur" et
la table "Pays"

L'erreur indiquée est "Erreur de syntaxe dans la clause FROM"

Jai aussi essayé (entre autre) :
Rsql = "SELECT FournisseurArticle.CodeArticle, Fournisseur.Nom, Pays.nom,
FournisseurArticle.UniteAchat FROM FournisseurArticle INNER JOIN
Fournisseur ON FournisseurArticle.CodeFournisseur = Fournisseur.Code,
Fournisseur INNER JOIN Pays ON Fournisseur.Pays = Pays.Code;"
Mais là il me met que j'ai deux fois "Fournisseur" dans la clause FROM et
que ce n'est pas possible.

2) Je n'arrive pas à écrire une requête contenant une jointure externe.
J'ai tenté de mettre LEFT OUTER JOIN... ON et ça ne marche pas. Donc si
quelqu'un peut m'indiquer la syntaxe d'une jointure externe qui fonctionne
ce serait super !

Thierry



Avatar
Modeste
Bonsour® Thierry Euzenot avec ferveur ;o))) vous nous disiez :

Personne ne peut m'aider ?


de mémoire (je ne suis plus en activité)
l'utilisation de plusieurs fois la même source dans une clause FROM
nécessite l'utilisation d'un(ou plusieurs) Alias ou création de table(s)
intermédiaire(s)

Poser la question sur :
News://news.microsoft.com/microsoft.public.fr.access

ou sur les forums US :
News://news.microsoft.com/microsoft.public.access
et sous-sections

autre recours : (hk HONG-KONG ????)
News://news.microsoft.com/microsoft.public.hk.MicrosoftSQL

--
--
@+
;o)))

Avatar
Pierre CFI [mvp]
bonjour
req sur 3 tables
SELECT CLIENT.CLIENT_NO, CLIENT.CLIENT_NOM, COMMANDE.COMMANDE_NO,
COMMANDE.COMMANDE_DATE, DETAIL_COMMANDE.PRODUIT_NO, DETAIL_COMMANDE.QTE
FROM (CLIENT INNER JOIN COMMANDE ON CLIENT.CLIENT_NO = COMMANDE.CLIENT_NO)
INNER JOIN DETAIL_COMMANDE ON COMMANDE.COMMANDE_NO =
DETAIL_COMMANDE.COMMANDE_NO;


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"Modeste" a écrit dans le message de news:

Bonsour® Thierry Euzenot avec ferveur ;o))) vous nous disiez :

Personne ne peut m'aider ?


de mémoire (je ne suis plus en activité)
l'utilisation de plusieurs fois la même source dans une clause FROM
nécessite l'utilisation d'un(ou plusieurs) Alias ou création de table(s)
intermédiaire(s)

Poser la question sur :
News://news.microsoft.com/microsoft.public.fr.access

ou sur les forums US :
News://news.microsoft.com/microsoft.public.access
et sous-sections

autre recours : (hk HONG-KONG ????)
News://news.microsoft.com/microsoft.public.hk.MicrosoftSQL

--
--
@+
;o)))





Avatar
Pierre CFI [mvp]
.../...
celà dit, tu ferais mieux de faire la req dans access et lire cette req dans
excel
le inner joint n'est pas du sql "standart"

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Pierre CFI [mvp]" a écrit dans le message de
news: %
bonjour
req sur 3 tables
SELECT CLIENT.CLIENT_NO, CLIENT.CLIENT_NOM, COMMANDE.COMMANDE_NO,
COMMANDE.COMMANDE_DATE, DETAIL_COMMANDE.PRODUIT_NO, DETAIL_COMMANDE.QTE
FROM (CLIENT INNER JOIN COMMANDE ON CLIENT.CLIENT_NO = COMMANDE.CLIENT_NO)
INNER JOIN DETAIL_COMMANDE ON COMMANDE.COMMANDE_NO =
DETAIL_COMMANDE.COMMANDE_NO;


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Modeste" a écrit dans le message de news:

Bonsour® Thierry Euzenot avec ferveur ;o))) vous nous disiez :

Personne ne peut m'aider ?


de mémoire (je ne suis plus en activité)
l'utilisation de plusieurs fois la même source dans une clause FROM
nécessite l'utilisation d'un(ou plusieurs) Alias ou création de table(s)
intermédiaire(s)

Poser la question sur :
News://news.microsoft.com/microsoft.public.fr.access

ou sur les forums US :
News://news.microsoft.com/microsoft.public.access
et sous-sections

autre recours : (hk HONG-KONG ????)
News://news.microsoft.com/microsoft.public.hk.MicrosoftSQL

--
--
@+
;o)))









Avatar
Thierry Euzenot
Merci beaucoup pour tes réponses Pierre (et Modeste aussi ^_^ ) je vais
tester dès que possible. Pour le INNER JOINT j'avais lu au contraire que
c'était la façon de procéder depuis pas mal de temps en sql. Je vais me
documenter !

J'étais parti là-dessus car je n'arrive pas à faire de jointures externes en
vba/sql.

Thierry

"Pierre CFI [mvp]" a écrit dans le message de
news:
.../...
celà dit, tu ferais mieux de faire la req dans access et lire cette req
dans excel
le inner joint n'est pas du sql "standart"

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Pierre CFI [mvp]" a écrit dans le message de
news: %
bonjour
req sur 3 tables
SELECT CLIENT.CLIENT_NO, CLIENT.CLIENT_NOM, COMMANDE.COMMANDE_NO,
COMMANDE.COMMANDE_DATE, DETAIL_COMMANDE.PRODUIT_NO, DETAIL_COMMANDE.QTE
FROM (CLIENT INNER JOIN COMMANDE ON CLIENT.CLIENT_NO =
COMMANDE.CLIENT_NO) INNER JOIN DETAIL_COMMANDE ON COMMANDE.COMMANDE_NO =
DETAIL_COMMANDE.COMMANDE_NO;


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Modeste" a écrit dans le message de news:

Bonsour® Thierry Euzenot avec ferveur ;o))) vous nous disiez :

Personne ne peut m'aider ?


de mémoire (je ne suis plus en activité)
l'utilisation de plusieurs fois la même source dans une clause FROM
nécessite l'utilisation d'un(ou plusieurs) Alias ou création de table(s)
intermédiaire(s)

Poser la question sur :
News://news.microsoft.com/microsoft.public.fr.access

ou sur les forums US :
News://news.microsoft.com/microsoft.public.access
et sous-sections

autre recours : (hk HONG-KONG ????)
News://news.microsoft.com/microsoft.public.hk.MicrosoftSQL

--
--
@+
;o)))













Avatar
Pierre CFI [mvp]
.../...
fais les avec query

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Thierry Euzenot" <thierry.euzenot*arobase*gmail.com> a écrit dans le
message de news:
Merci beaucoup pour tes réponses Pierre (et Modeste aussi ^_^ ) je vais
tester dès que possible. Pour le INNER JOINT j'avais lu au contraire que
c'était la façon de procéder depuis pas mal de temps en sql. Je vais me
documenter !

J'étais parti là-dessus car je n'arrive pas à faire de jointures externes
en vba/sql.

Thierry

"Pierre CFI [mvp]" a écrit dans le message de
news:
.../...
celà dit, tu ferais mieux de faire la req dans access et lire cette req
dans excel
le inner joint n'est pas du sql "standart"

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Pierre CFI [mvp]" a écrit dans le message de
news: %
bonjour
req sur 3 tables
SELECT CLIENT.CLIENT_NO, CLIENT.CLIENT_NOM, COMMANDE.COMMANDE_NO,
COMMANDE.COMMANDE_DATE, DETAIL_COMMANDE.PRODUIT_NO, DETAIL_COMMANDE.QTE
FROM (CLIENT INNER JOIN COMMANDE ON CLIENT.CLIENT_NO =
COMMANDE.CLIENT_NO) INNER JOIN DETAIL_COMMANDE ON COMMANDE.COMMANDE_NO =
DETAIL_COMMANDE.COMMANDE_NO;


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Modeste" a écrit dans le message de news:

Bonsour® Thierry Euzenot avec ferveur ;o))) vous nous disiez :

Personne ne peut m'aider ?


de mémoire (je ne suis plus en activité)
l'utilisation de plusieurs fois la même source dans une clause FROM
nécessite l'utilisation d'un(ou plusieurs) Alias ou création de
table(s) intermédiaire(s)

Poser la question sur :
News://news.microsoft.com/microsoft.public.fr.access

ou sur les forums US :
News://news.microsoft.com/microsoft.public.access
et sous-sections

autre recours : (hk HONG-KONG ????)
News://news.microsoft.com/microsoft.public.hk.MicrosoftSQL

--
--
@+
;o)))

















Avatar
Thierry Euzenot
Pas con :o)
J'ai tellement la tête dans le guidon que je ne vois même plus les solutions
les plus simples !

Merci encore pour ton aide !
Thierry

"Pierre CFI [mvp]" a écrit dans le message de
news:
.../...
fais les avec query

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Thierry Euzenot" <thierry.euzenot*arobase*gmail.com> a écrit dans le
message de news:
Merci beaucoup pour tes réponses Pierre (et Modeste aussi ^_^ ) je vais
tester dès que possible. Pour le INNER JOINT j'avais lu au contraire que
c'était la façon de procéder depuis pas mal de temps en sql. Je vais me
documenter !

J'étais parti là-dessus car je n'arrive pas à faire de jointures externes
en vba/sql.

Thierry

"Pierre CFI [mvp]" a écrit dans le message de
news:
.../...
celà dit, tu ferais mieux de faire la req dans access et lire cette req
dans excel
le inner joint n'est pas du sql "standart"

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Pierre CFI [mvp]" a écrit dans le message de
news: %
bonjour
req sur 3 tables
SELECT CLIENT.CLIENT_NO, CLIENT.CLIENT_NOM, COMMANDE.COMMANDE_NO,
COMMANDE.COMMANDE_DATE, DETAIL_COMMANDE.PRODUIT_NO, DETAIL_COMMANDE.QTE
FROM (CLIENT INNER JOIN COMMANDE ON CLIENT.CLIENT_NO =
COMMANDE.CLIENT_NO) INNER JOIN DETAIL_COMMANDE ON COMMANDE.COMMANDE_NO
= DETAIL_COMMANDE.COMMANDE_NO;


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mpfa.info/
*********************************************************
"Modeste" a écrit dans le message de news:

Bonsour® Thierry Euzenot avec ferveur ;o))) vous nous disiez :

Personne ne peut m'aider ?


de mémoire (je ne suis plus en activité)
l'utilisation de plusieurs fois la même source dans une clause FROM
nécessite l'utilisation d'un(ou plusieurs) Alias ou création de
table(s) intermédiaire(s)

Poser la question sur :
News://news.microsoft.com/microsoft.public.fr.access

ou sur les forums US :
News://news.microsoft.com/microsoft.public.access
et sous-sections

autre recours : (hk HONG-KONG ????)
News://news.microsoft.com/microsoft.public.hk.MicrosoftSQL

--
--
@+
;o)))