Requête avec plusieurs tables de jonction et champs similaire [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
18 avril 2019
-
Messages postés
16
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
18 avril 2019
-
Bonjour,
Complètement novice sur Access, j'ai besoin de vos lumières.
Je dois faire une bdd contact dans laquelle j'ai notamment une table contact (comprenant des personnes de différents horizons), une table agent (qui sont les employés) et une table élus.
J'ai aussi une table réunion qui mentionne les différentes réunions récurrentes auxquelles ils (contact, élus et agents) doivent participer.
Et comme chaque personne peut participer à plusieurs réunions et chaque réunion est concernée par plusieurs personnes, j'ai fait des tables intermédiaires.
Toutefois, lorsque je fais ma requête pour retrouver toutes les personnes qui doivent participer à une réunion, cela me met des doublons.
De plus, j'aimerai que les noms des contacts, les noms des agents et les noms des élus se mettent l'un en dessous de l'autre et non à droite de ma feuille de données.
J'espère avoir été claire et explicite.
Merci d'avance pour votre aide

3 réponses

Messages postés
11775
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 août 2020
674
bonjour, peux-tu partager le code SQL de ta requête?
et donner un exemple de doublon.
Messages postés
16
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
18 avril 2019

SELECT REUNIONS.[Nom REUNION], ELUS.Mail, AGENTS.Mail, CONTACTS.Mail
FROM ((ELUS INNER JOIN (REUNIONS INNER JOIN [TJ_REUNION ELUS] ON REUNIONS.[N° Réunion] = [TJ_REUNION ELUS].[N° Réunion]) ON ELUS.[N° Elu] = [TJ_REUNION ELUS].[N° Elu]) INNER JOIN (CONTACTS INNER JOIN [TJ_REUNION CONTACT] ON CONTACTS.[N° Contact] = [TJ_REUNION CONTACT].[N° Contact]) ON REUNIONS.[N° Réunion] = [TJ_REUNION CONTACT].[N° Réunion]) INNER JOIN (AGENTS INNER JOIN [TJ_REUNION AGENTS] ON AGENTS.[N° Agent] = [TJ_REUNION AGENTS].[N° Agent]) ON REUNIONS.[N° Réunion] = [TJ_REUNION AGENTS].[N° Réunion]
WHERE (((REUNIONS.[Nom REUNION])="COMITE DE PILOTAGE CENTRE AQUATIQUE"));
Voilà pour le code SQL

Et pour les doublons :
La feuille de donnée se présente avec une colonne mail pour les élus (je n'ai que 2 élus qui participent à ladite réunion mais les adresses sont répétées les unes en dessous des autres et j'ai une autre colonne pour les mails contacts et idem j'ai une dizaine de participants, et ils se répètent les uns en dessous des autres
bonjour
peux tu mettre ta base compressée dans un lien avec ci joint que tu copieras dans un message
Messages postés
11775
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 août 2020
674
peut-être veux-tu plutôt faire trois requêtes, une pour les élus, une pour les agents, et une pour les contacts.
Messages postés
16
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
18 avril 2019

Bonjour, merci pour vos réponses. Alors je ne peux pas me permettre de transmettre la base de données qui contient des éléments confidentiels. Et non, c'est bien une seule requête dont j'ai besoin....Alors je me demande si je ne devrais pas faire une seule table avec les contacts, les agents et les élus...
Messages postés
16
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
18 avril 2019

Re-bonjour,
J'ai fait les 3 requêtes séparément et elles fonctionnent.
J'ai donc tenté de faire une requête union mais j'ai des bugs. voici le code
SELECT DISTINCT AGENTS.Civilité, AGENTS.Nom, AGENTS.Prénom, AGENTS.Mail, REUNIONS.[Nom REUNION]
FROM REUNIONS INNER JOIN (AGENTS INNER JOIN [TJ_REUNION AGENTS] ON AGENTS.[N° Agent] = [TJ_REUNION AGENTS].[N° Agent]) ON REUNIONS.[N° Réunion] = [TJ_REUNION AGENTS].[N° Réunion]
WHERE (((REUNIONS.[Nom REUNION])="COMITE DE PILOTAGE CENTRE AQUATIQUE"))
UNION SELECT CONTACTS.Civilité, CONTACTS.Nom, CONTACTS.Prénom, CONTACTS.Mail, REUNIONS.[Nom REUNION]
FROM REUNIONS INNER JOIN (CONTACTS INNER JOIN [TJ_REUNION CONTACT] ON CONTACTS.[N° CONTACT] = [TJ_REUNION CONTACT].[N° Contact]) ON REUNIONS.[N° Réunion] = [TJ_REUNION CONTACT].[N° Réunion]
WHERE (((REUNIONS.[Nom REUNION])="COMITE DE PILOTAGE CENTRE AQUATIQUE"))
UNION SELECT ELUS.Civilité, ELUS.Nom, ELUS.Prénom, ELUS.Mail, REUNIONS.[Nom REUNION]
FROM REUNIONS INNER JOIN (ELUS INNER JOIN [TJ_REUNION ELUS] ON ELUS.[N° ELU] = [TJ_REUNION ELUS].[N° Elu]) ON REUNIONS.[N° Réunion] = [TJ_REUNION ELUS].[N° Réunion]
WHERE (((REUNIONS.[Nom REUNION])="COMITE DE PILOTAGE CENTRE AQUATIQUE"));

Qu'est ce que j'ai mal fait ?
Messages postés
11775
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 août 2020
674
il faut remplacer
AGENTS.Mail
par
 hyperlinkpart (AGENTS.Mail, 2)

SELECT DISTINCT AGENTS.Civilité, AGENTS.Nom, AGENTS.Prénom, 
hyperlinkpart (AGENTS.Mail, 2), 
REUNIONS.[Nom REUNION] 
Messages postés
16
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
18 avril 2019
>
Messages postés
11775
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 août 2020

Merci pour les précisions.

Mais non cela ne fonctionne toujours pas. Voilà ce qui s'affiche désormais :
mailto:vanessa54230@orange.
En fait toutes mes adresses mails sont tronquées...

A toutes fins utiles, voilà le code :

SELECT DISTINCT AGENTS.Civilité, AGENTS.Nom, AGENTS.Prénom, hyperlinkpart (AGENTS.Mail, 2), REUNIONS.[Nom REUNION]
FROM REUNIONS INNER JOIN (AGENTS INNER JOIN [TJ_REUNION AGENTS] ON AGENTS.[N° Agent] = [TJ_REUNION AGENTS].[N° Agent]) ON REUNIONS.[N° Réunion] = [TJ_REUNION AGENTS].[N° Réunion]
WHERE (((REUNIONS.[Nom REUNION])="COMITE DE PILOTAGE CENTRE AQUATIQUE"))
UNION SELECT CONTACTS.Civilité, CONTACTS.Nom, CONTACTS.Prénom, hyperlinkpart (CONTACTS.Mail, 2), REUNIONS.[Nom REUNION]
FROM REUNIONS INNER JOIN (CONTACTS INNER JOIN [TJ_REUNION CONTACT] ON CONTACTS.[N° CONTACT] = [TJ_REUNION CONTACT].[N° Contact]) ON REUNIONS.[N° Réunion] = [TJ_REUNION CONTACT].[N° Réunion]
WHERE (((REUNIONS.[Nom REUNION])="COMITE DE PILOTAGE CENTRE AQUATIQUE"))
UNION SELECT ELUS.Civilité, ELUS.Nom, ELUS.Prénom, hyperlinkpart (ELUS.Mail, 2), REUNIONS.[Nom REUNION]
FROM REUNIONS INNER JOIN (ELUS INNER JOIN [TJ_REUNION ELUS] ON ELUS.[N° ELU] = [TJ_REUNION ELUS].[N° Elu]) ON REUNIONS.[N° Réunion] = [TJ_REUNION ELUS].[N° Réunion]
WHERE (((REUNIONS.[Nom REUNION])="COMITE DE PILOTAGE CENTRE AQUATIQUE"));
Messages postés
11775
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 août 2020
674 >
Messages postés
16
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
18 avril 2019

essaie
SELECT  hyperlinkpart (Mail, X)
FROM AGENTS
en jouant avec les valeurs de X, de 0 à 5.
Messages postés
16
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
18 avril 2019

Génial. Çà fonctionne - à part pour 2 adresses mails mais comme elles dépendent toutes les 2 de la même table, je vais aller vérifier les paramètres.
Merci beaucoup pour ton aide
Messages postés
16
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
18 avril 2019

Problème résolu :
Les paramètres de toutes les tables étaient identiques. Donc le pb ne venait pas là. Du coup j'ai remodifié les valeurs.
Pour le mail agent 0
Pour le mail contact 1
Pour le mail élu j'avais mis 2 et c'est pour cela que ça ne fonctionnait pas. J'ai essayé de lui attribuer le 1 et maintenant tt marche
Encore merci