Bonjour à tous,

Le titre n'étant pas très parlant je vais essayer de vous expliquer mon problème.

Contexte simplifié :

Un étudiant appellent une hotline pour un problème. (jusque là ça va )
Une membre de la hotline répond. Ne trouvant pas de résolution elle enregistre l'appel.

=> création de l'étudiant dans la table CMS_Customer
=> création de l'appel avec comme attribut :
(id, date, details, resolution, statut, category, customer_id)
=> création d'une ligne dans la relation Treated_By entre l'ID de l'appel et l'ID de la personne de la hotline + la date


Plus tard ne trouvant toujours pas de réponse, elle fait traiter l'appel par une autre personne.
=> création d'une ligne dans la relation Treated_By entre l'ID de l'appel et l'ID de la nouvelle personne de la hotline + la nouvelle date

L'application permet de rechercher un appel. Dans le résultat de la recherche je voudrais afficher à la fois la personne qui à répondu à l'appel et celle qui le traite en ce moment.

Voilà les tables remplies avec un exemple, et en gros ce que je souhaite obtenir :




Voici 2 versions de la requête que je manipule depuis ce matin en vain

Version 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT a.customer_id, a.customer_forename, a.customer_surname,  f1, s1,  f2, s2, b.full_call_id, c.full_call_category_desc,  status_desc
FROM CMS_Customer AS a, CMS_Full_Call AS b, CMS_Full_Call_Category AS c,  CMS_Status AS e
WHERE (b.customer_id=a.customer_id) 
And (b.status_id=e.status_id) 
And (b.full_call_category_id=c.full_call_category_id)
AND f1  IN (select h.person_forename FROM CMS_Team_Member h , CMS_Treated_By  j WHERE b.full_call_id=j.full_call_id AND j.person_id=h.person_id and j.date_treatement IN (select min(k.date_treatement) FROM CMS_Treated_By k WHERE k.full_call_id=b.full_call_id))
AND s1  IN (select h.person_surname FROM CMS_Team_Member h , CMS_Treated_By  j WHERE b.full_call_id=j.full_call_id AND j.person_id=h.person_id and j.date_treatement IN (select min(k.date_treatement) FROM CMS_Treated_By k WHERE k.full_call_id=b.full_call_id))
AND f2  IN (select h.person_forename FROM CMS_Team_Member h , CMS_Treated_By  j WHERE b.full_call_id=j.full_call_id AND j.person_id=h.person_id and j.date_treatement IN (select max(k.date_treatement) FROM CMS_Treated_By k WHERE k.full_call_id=b.full_call_id))
AND s2  IN (select h.person_surname FROM CMS_Team_Member h , CMS_Treated_By  j WHERE b.full_call_id=j.full_call_id AND j.person_id=h.person_id and j.date_treatement IN (select max(k.date_treatement) FROM CMS_Treated_By k WHERE k.full_call_id=b.full_call_id))
;
Version 2 simplifiée pour tester
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
SELECT a.customer_id, a.customer_forename, a.customer_surname, g.person_forename AS pf2,  b.full_call_id, c.full_call_category_desc,  status_desc
FROM CMS_Customer AS a, CMS_Full_Call AS b, CMS_Full_Call_Category AS c,  CMS_Status AS e, CMS_Treated_By AS f, CMS_Team_Member AS g
WHERE (b.customer_id=a.customer_id) 
And (b.full_call_id=f.full_call_id) 
And (f.person_id=g.person_id) 
And (b.status_id=e.status_id) 
And (b.full_call_category_id=c.full_call_category_id)
AND pf2 IN (select h.person_forename FROM CMS_Team_Member h , CMS_Customer i, CMS_Treated_By  j WHERE b.full_call_id=j.full_call_id AND j.person_id=h.person_id and j.date_treatement IN (select min(k.date_treatement) FROM CMS_Treated_By k WHERE k.full_call_id=b.full_call_id))
;
Bon ok j'avoue c'est barbare, et je ne vous cache pas que biensûr la requête ne fonctionne pas, Access me demandant de renseigner les champs F1 F2 S1 S2.

Est-ce possible d'afficher 2 colonnes prenant leurs valeurs sur le même domaine comme je souhaite le faire ?
Si oui avez vous une solution ?
(Si non aussi d'ailleur !)

Merci d'avance,

mersie_lover.