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
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
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)) ;
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.
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)) ;
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.
Partager