-----Message d'origine-----
Salut,
Si les tables se nomment a et b:
SELECT q.nom, q.prenom
FROM (( SELECT nom, prenom, bureau FROM a
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
ON a.nom=q.nom
AND a.prenom=q.prenom
AND a.bureau=q.bureau
) LEFT JOIN b
ON b.nom=q.nom
AND b.prenom=q.prenom
AND b.bureau=q.bureau
GROUP BY q.nom, q.prenom, q.bureau
HAVING COUNT(*) = 2
Une partie de la complexité est que Jet ne possède pas de
FULL JOIN, ce que
je contourne avec le UNION.
Une fois les joins externes (équivalents à un FULL JOIN)
exécutés, mais
avant aggrégation (groupement), on trouve, pour un
utilisateur donné:
- S'il a un bureau dans a, mais pas dans b, le
décompte sera de 1.
- S'il a un bureau dans b, mais pas dans a, le
décompte sera de 1.
- S'il a le même bureau dans a et dans b, le
décompte sera de 1. De
plus, a.bureau = b.bureau=q.bureau.
- S'il a un bureau différent dans a et dans b,
son décompte est de
2. En effet, avant aggrégation, on a un enregistrement
avec a.bureau IS
NULL (avec son b.bureau= q.bureau, non null), et un autre
avec b.bureau IS
NULL (mais avec son a.bureau=q.bureau, non null), pour
cet utilisateur.
Espérant être utile,
Vanderghast, Access MVP
"paul" wrote in
message
news:010501c3b827$a665f180$
J'ai 2 tables:
- l'une contient: Identifiant, Nom, Prenom, Bureau
- l'autre contient les mêmes champs
comment faire pour connaitre les personnes qui ont un même
identifiant mais un bureau different entre les 2 tables
.
-----Message d'origine-----
Salut,
Si les tables se nomment a et b:
SELECT q.nom, q.prenom
FROM (( SELECT nom, prenom, bureau FROM a
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
ON a.nom=q.nom
AND a.prenom=q.prenom
AND a.bureau=q.bureau
) LEFT JOIN b
ON b.nom=q.nom
AND b.prenom=q.prenom
AND b.bureau=q.bureau
GROUP BY q.nom, q.prenom, q.bureau
HAVING COUNT(*) = 2
Une partie de la complexité est que Jet ne possède pas de
FULL JOIN, ce que
je contourne avec le UNION.
Une fois les joins externes (équivalents à un FULL JOIN)
exécutés, mais
avant aggrégation (groupement), on trouve, pour un
utilisateur donné:
- S'il a un bureau dans a, mais pas dans b, le
décompte sera de 1.
- S'il a un bureau dans b, mais pas dans a, le
décompte sera de 1.
- S'il a le même bureau dans a et dans b, le
décompte sera de 1. De
plus, a.bureau = b.bureau=q.bureau.
- S'il a un bureau différent dans a et dans b,
son décompte est de
2. En effet, avant aggrégation, on a un enregistrement
avec a.bureau IS
NULL (avec son b.bureau= q.bureau, non null), et un autre
avec b.bureau IS
NULL (mais avec son a.bureau=q.bureau, non null), pour
cet utilisateur.
Espérant être utile,
Vanderghast, Access MVP
"paul" <anonymous@discussions.microsoft.com> wrote in
message
news:010501c3b827$a665f180$a101280a@phx.gbl...
J'ai 2 tables:
- l'une contient: Identifiant, Nom, Prenom, Bureau
- l'autre contient les mêmes champs
comment faire pour connaitre les personnes qui ont un même
identifiant mais un bureau different entre les 2 tables
.
-----Message d'origine-----
Salut,
Si les tables se nomment a et b:
SELECT q.nom, q.prenom
FROM (( SELECT nom, prenom, bureau FROM a
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
ON a.nom=q.nom
AND a.prenom=q.prenom
AND a.bureau=q.bureau
) LEFT JOIN b
ON b.nom=q.nom
AND b.prenom=q.prenom
AND b.bureau=q.bureau
GROUP BY q.nom, q.prenom, q.bureau
HAVING COUNT(*) = 2
Une partie de la complexité est que Jet ne possède pas de
FULL JOIN, ce que
je contourne avec le UNION.
Une fois les joins externes (équivalents à un FULL JOIN)
exécutés, mais
avant aggrégation (groupement), on trouve, pour un
utilisateur donné:
- S'il a un bureau dans a, mais pas dans b, le
décompte sera de 1.
- S'il a un bureau dans b, mais pas dans a, le
décompte sera de 1.
- S'il a le même bureau dans a et dans b, le
décompte sera de 1. De
plus, a.bureau = b.bureau=q.bureau.
- S'il a un bureau différent dans a et dans b,
son décompte est de
2. En effet, avant aggrégation, on a un enregistrement
avec a.bureau IS
NULL (avec son b.bureau= q.bureau, non null), et un autre
avec b.bureau IS
NULL (mais avec son a.bureau=q.bureau, non null), pour
cet utilisateur.
Espérant être utile,
Vanderghast, Access MVP
"paul" wrote in
message
news:010501c3b827$a665f180$
J'ai 2 tables:
- l'une contient: Identifiant, Nom, Prenom, Bureau
- l'autre contient les mêmes champs
comment faire pour connaitre les personnes qui ont un même
identifiant mais un bureau different entre les 2 tables
.
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source qui est q.
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source qui est q.
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source qui est q.
-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est le
nom de la sous-requête unionUNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message de
news:023001c3b8b3$420dc000$
je ne comprends pas à quoi correspond q
.
-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est le
nom de la sous-requête union
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:023001c3b8b3$420dc000$a001280a@phx.gbl...
je ne comprends pas à quoi correspond q
.
-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est le
nom de la sous-requête unionUNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message de
news:023001c3b8b3$420dc000$
je ne comprends pas à quoi correspond q
.
-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est le
nom de la sous-requête unionUNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message de
news:023001c3b8b3$420dc000$
je ne comprends pas à quoi correspond q
.
-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est le
nom de la sous-requête union
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:023001c3b8b3$420dc000$a001280a@phx.gbl...
je ne comprends pas à quoi correspond q
.
-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est le
nom de la sous-requête unionUNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message de
news:023001c3b8b3$420dc000$
je ne comprends pas à quoi correspond q
.
-----Message d'origine-----
si tu as une inversion de champs entre les tables de
départ, inverse les
champs dans ta requête union pour ajuster à la réalité.
Michel va passer
bientôt, je n'ai pas suivi les fils.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message de
news:08d201c3b8bc$a61f7df0$
En reprennant les informations que m'a donné Michel voilà
ce que j'obtiens
DATA correpond à la table a
A_Utilisateur_Tel_Bureau_Service correpond à la table b
SELECT q.nom, q.prenom, q.bureau
FROM (( SELECT Te_Nom, Te_Prenom,[Bur AP] FROM DATA
UNION
SELECT N_UTIL, PRE_UTIL, N_SITE_3 FROM
A_Utilisateur_Tel_Bureau_Service) As
q LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON DATA.Te_Nom=q.nom
AND DATA.Te_Prenom=q.prenom
AND DATA.[Bur AP]=q.bureau
) LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON
A_Utilisateur_Tel_Bureau_Service.N_UTIL=q.nom
AND
A_Utilisateur_Tel_Bureau_Service.PRE_UTIL=q.prenom
AND
A_Utilisateur_Tel_Bureau_Service.N_SITE_3=q.bureau
GROUP BY q.nom, q.prenom, q.bureau
HAVING COUNT(*) = 2
Mais j'ai le message Erreur de syntaxe dans l'opération
JOIN-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est lenom de la sous-requête unionUNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message denews:023001c3b8b3$420dc000$
je ne comprends pas à quoi correspond q
.
.
-----Message d'origine-----
si tu as une inversion de champs entre les tables de
départ, inverse les
champs dans ta requête union pour ajuster à la réalité.
Michel va passer
bientôt, je n'ai pas suivi les fils.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:08d201c3b8bc$a61f7df0$a401280a@phx.gbl...
En reprennant les informations que m'a donné Michel voilà
ce que j'obtiens
DATA correpond à la table a
A_Utilisateur_Tel_Bureau_Service correpond à la table b
SELECT q.nom, q.prenom, q.bureau
FROM (( SELECT Te_Nom, Te_Prenom,[Bur AP] FROM DATA
UNION
SELECT N_UTIL, PRE_UTIL, N_SITE_3 FROM
A_Utilisateur_Tel_Bureau_Service) As
q LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON DATA.Te_Nom=q.nom
AND DATA.Te_Prenom=q.prenom
AND DATA.[Bur AP]=q.bureau
) LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON
A_Utilisateur_Tel_Bureau_Service.N_UTIL=q.nom
AND
A_Utilisateur_Tel_Bureau_Service.PRE_UTIL=q.prenom
AND
A_Utilisateur_Tel_Bureau_Service.N_SITE_3=q.bureau
GROUP BY q.nom, q.prenom, q.bureau
HAVING COUNT(*) = 2
Mais j'ai le message Erreur de syntaxe dans l'opération
JOIN
-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est le
nom de la sous-requête union
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:023001c3b8b3$420dc000$a001280a@phx.gbl...
je ne comprends pas à quoi correspond q
.
.
-----Message d'origine-----
si tu as une inversion de champs entre les tables de
départ, inverse les
champs dans ta requête union pour ajuster à la réalité.
Michel va passer
bientôt, je n'ai pas suivi les fils.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message de
news:08d201c3b8bc$a61f7df0$
En reprennant les informations que m'a donné Michel voilà
ce que j'obtiens
DATA correpond à la table a
A_Utilisateur_Tel_Bureau_Service correpond à la table b
SELECT q.nom, q.prenom, q.bureau
FROM (( SELECT Te_Nom, Te_Prenom,[Bur AP] FROM DATA
UNION
SELECT N_UTIL, PRE_UTIL, N_SITE_3 FROM
A_Utilisateur_Tel_Bureau_Service) As
q LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON DATA.Te_Nom=q.nom
AND DATA.Te_Prenom=q.prenom
AND DATA.[Bur AP]=q.bureau
) LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON
A_Utilisateur_Tel_Bureau_Service.N_UTIL=q.nom
AND
A_Utilisateur_Tel_Bureau_Service.PRE_UTIL=q.prenom
AND
A_Utilisateur_Tel_Bureau_Service.N_SITE_3=q.bureau
GROUP BY q.nom, q.prenom, q.bureau
HAVING COUNT(*) = 2
Mais j'ai le message Erreur de syntaxe dans l'opération
JOIN-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est lenom de la sous-requête unionUNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message denews:023001c3b8b3$420dc000$
je ne comprends pas à quoi correspond q
.
.
-----Message d'origine-----
si tu as une inversion de champs entre les tables de
départ, inverse les
champs dans ta requête union pour ajuster à la réalité.
Michel va passer
bientôt, je n'ai pas suivi les fils.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message de
news:08d201c3b8bc$a61f7df0$
En reprennant les informations que m'a donné Michel voilà
ce que j'obtiens
DATA correpond à la table a
A_Utilisateur_Tel_Bureau_Service correpond à la table b
SELECT q.nom, q.prenom, q.bureau
FROM (( SELECT Te_Nom, Te_Prenom,[Bur AP] FROM DATA
UNION
SELECT N_UTIL, PRE_UTIL, N_SITE_3 FROM
A_Utilisateur_Tel_Bureau_Service) As
q LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON DATA.Te_Nom=q.nom
AND DATA.Te_Prenom=q.prenom
AND DATA.[Bur AP]=q.bureau
) LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON
A_Utilisateur_Tel_Bureau_Service.N_UTIL=q.nom
AND
A_Utilisateur_Tel_Bureau_Service.PRE_UTIL=q.prenom
AND
A_Utilisateur_Tel_Bureau_Service.N_SITE_3=q.bureau
GROUP BY q.nom, q.prenom, q.bureau
HAVING COUNT(*) = 2
Mais j'ai le message Erreur de syntaxe dans l'opération
JOIN-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est lenom de la sous-requête unionUNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message denews:023001c3b8b3$420dc000$
je ne comprends pas à quoi correspond q
.
.
-----Message d'origine-----
si tu as une inversion de champs entre les tables de
départ, inverse les
champs dans ta requête union pour ajuster à la réalité.
Michel va passer
bientôt, je n'ai pas suivi les fils.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:08d201c3b8bc$a61f7df0$a401280a@phx.gbl...
En reprennant les informations que m'a donné Michel voilà
ce que j'obtiens
DATA correpond à la table a
A_Utilisateur_Tel_Bureau_Service correpond à la table b
SELECT q.nom, q.prenom, q.bureau
FROM (( SELECT Te_Nom, Te_Prenom,[Bur AP] FROM DATA
UNION
SELECT N_UTIL, PRE_UTIL, N_SITE_3 FROM
A_Utilisateur_Tel_Bureau_Service) As
q LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON DATA.Te_Nom=q.nom
AND DATA.Te_Prenom=q.prenom
AND DATA.[Bur AP]=q.bureau
) LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON
A_Utilisateur_Tel_Bureau_Service.N_UTIL=q.nom
AND
A_Utilisateur_Tel_Bureau_Service.PRE_UTIL=q.prenom
AND
A_Utilisateur_Tel_Bureau_Service.N_SITE_3=q.bureau
GROUP BY q.nom, q.prenom, q.bureau
HAVING COUNT(*) = 2
Mais j'ai le message Erreur de syntaxe dans l'opération
JOIN
-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est le
nom de la sous-requête union
UNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:023001c3b8b3$420dc000$a001280a@phx.gbl...
je ne comprends pas à quoi correspond q
.
.
-----Message d'origine-----
si tu as une inversion de champs entre les tables de
départ, inverse les
champs dans ta requête union pour ajuster à la réalité.
Michel va passer
bientôt, je n'ai pas suivi les fils.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message de
news:08d201c3b8bc$a61f7df0$
En reprennant les informations que m'a donné Michel voilà
ce que j'obtiens
DATA correpond à la table a
A_Utilisateur_Tel_Bureau_Service correpond à la table b
SELECT q.nom, q.prenom, q.bureau
FROM (( SELECT Te_Nom, Te_Prenom,[Bur AP] FROM DATA
UNION
SELECT N_UTIL, PRE_UTIL, N_SITE_3 FROM
A_Utilisateur_Tel_Bureau_Service) As
q LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON DATA.Te_Nom=q.nom
AND DATA.Te_Prenom=q.prenom
AND DATA.[Bur AP]=q.bureau
) LEFT JOIN A_Utilisateur_Tel_Bureau_Service
ON
A_Utilisateur_Tel_Bureau_Service.N_UTIL=q.nom
AND
A_Utilisateur_Tel_Bureau_Service.PRE_UTIL=q.prenom
AND
A_Utilisateur_Tel_Bureau_Service.N_SITE_3=q.bureau
GROUP BY q.nom, q.prenom, q.bureau
HAVING COUNT(*) = 2
Mais j'ai le message Erreur de syntaxe dans l'opération
JOIN-----Message d'origine-----
Bonjour.
Le temps que Michel arrive pour t'expliquer tout ce qu'il
a fait, q est lenom de la sous-requête unionUNION
SELECT nom, prenom, bureau FROM b) As
q LEFT JOIN a
et pour faire appel aux champs il doit indiquer la source
qui est q.--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
"paul" a écrit dans
le message denews:023001c3b8b3$420dc000$
je ne comprends pas à quoi correspond q
.
.