Concatener 2 champs provenant de 2 tables

Résolu/Fermé
andromedor - 29 avril 2010 à 16:52
 andromedor - 11 mai 2010 à 13:33
Bonjour,

J'ai crée une base de donnée avec les tables suivantes:

Clients (dispose des champs IdClient, NomClient)
Colaborateurs (dispose des champs IdColaborateur, NomColaborateur)

Contacts (dispose des champs IdContact, NomduContact)

L'un des champs dans la table contacts s'appelle entreprise. Ce champ peut accepter une entrée texte de type IdClient. J'ai lié les 2 tables Clients et Contacts puis je crée une liste déroulante dans le champ IdClient de la table Contact qui va chercher les valeurs du champ IdClient dans la table client:

SELECT [IdClient], [NomClient] FROM Clients ORDER BY [NomClient];

Jusqu'à la tout fonctionne très bien.

J'aimerais maintenant savoir comment puis-je ajouter a cette liste une instruction du type:
SELECT [IdColaborateur], [NomColaborateur] FROM Colaborateur ORDER BY [NomColaborateur];
C'est à dire pouvoir concatener ou aditionner les 2 expression (IdClients et IdColaborateurs sont du même format) pour avoir dans un même liste l'ensemble des clients + colaborateurs. Est-ce possible? Est-il possible aussi de créer une liaison entre la liste Contacts et Colaborateurs dans la table de liaison pour maintenir une intégrité référentiel?

Je vous remercie beaucoup pour votre aide.
A voir également:

3 réponses

blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
29 avril 2010 à 21:55
Salut,

1 - Tu peux faire une requête UNION, c'est la somme de deux requêtes
2 - On peut créer une relation, mais il faut déjà savoir ce que tu souhaites faire
1
Salut,

J'avais oublié:

Contacts (dispose des champs IdContact, NomduContact, IdEntreprise)

Clients (dispose des champs IdClient, NomClient)
Colaborateurs (dispose des champs IdColaborateur, NomColaborateur)

Dans le champs IdEntreprise je veux créer une liste qui me permet de choisir une valeur parmis tous les IdClient et les IdColaborateur.

En plaçant dans l'édition de la table une liste déroulante dans ce champ et l'instruction :

SELECT [IdClient], [NomClient] FROM Clients ORDER BY [NomClient] UNION SELECT [IdColaborateur], [NomColaborateur] FROM Colaborateur ORDER BY [NomColaborateur];

j'obtiens ma liste concatener et ordonnée par ordre alphabétique. MERCI BLUX!!

Voila donc la deuxième étape ou j'ai besoin d'aide:
J'ai pour le moment dans la table des relations une relation qui a 1 Client peu associer une infinité de Contacts (relation entre Id Entreprise de la table Contacts et IdClient de la table Clients). J'aimerais créer en même temps une relation du même type entre IdContact et IdColaborateur. Ceci est-il possible? A priori quand je crée une relation basique il n'y a pas de problèmes. Cependant lorsque je tente de mettre l'option "exiger l'intégrité référentiel" et "actualiser en cascade", j'obtient le message d'erreur: Les données de la table Contacts enfreigne les règles d'intégrité référentiel. Si je laisse donc ma relation simple (sans définir les options d'intégrité), lorsque je vais dans la création d'un enregistrement pour la table Contacts, je peu choisir dans une liste déroulante créée précédement une valeur parmis les IdClients et IdColaborateur MAIS Access ne m'autorise pas a entrer une valeur de IdColaborateur et me dit "il n'y a pas de registre relationné dans la table Clients"... Ceci me parait normal à cause de la relation entre IdEntreprise (table Contacts) et IdClient. Cependant y a-t-il un moyen de remédier à ceci?

En résumé ce que j'aimerais faire c'est dire à Access que le champ IdEntreprise de la table Contacts puisse prendre les valeurs de IdClients ou bien de IdColaborateurs. Et que quand je modifie les champs des tables Clients ou Colaborateurs, les changements se répercutent dans ma table Contacts ("option actualiser les données en cascade").

Merci bien
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
30 avril 2010 à 13:01
Quelles sont les clés primaires de la table contact ?
0
Id Contact est la cléf primaire.

En fait les tables Clients et Colaborateurs ont exactement le même structure et je pourrais remplacer ces deux tables pour n'en avoir plus qu'une (et rajouter peut-être un champ dans lequel je mettrai si il s'agit d'un client ou d'un colaborateur). Cependant je préfère séparer mes deux tables tout en permettant à la table Contact d'interagir avec les deux autres tables comme si elle ne formaient qu'une seule table). Je ne sais pas si je suis très clair...

Merci pour ta réponse.
0