Bonjour,
J'ai recherché sur le forum et sur le web sans arriver à trouver une réponse à mon problème.
J'ai des commentaires qui forment une sorte de chat, liés à une ou plusieurs visites client, qui dépendent donc d'un id visite et d'un id client, et qui s'ordonnent par date (vccom_updated_at)
Si je fais :
J'ai la liste de mes commentaires pour une visite donnée et un client donné.
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT c.raison, DATE_FORMAT(vccom_updated_at, '%d %b %Y à %T' ) as vccom_updated_at, vc.visite_id FROM visite_client_commentaire vcc LEFT JOIN user u ON u.id = vcc.vccom_user_id LEFT JOIN visite_client vc ON vc.id = vcc.vccom_vicl_id LEFT JOIN client c on c.id = vc.client_id WHERE vc.visite_id = 69086 AND vc.client_id = 5 ORDER by vcc.vccom_updated_at DESC
Le but c'est d'avoir à la fois le nbr de commentaires sur une discussion (le COUNT des commentaires pour une visite et un client) et la date du dernier commentaire émis.
Seulement, si je fais, à partir de la requête précédente (où vccom_id est l'id des commentaires):
J'ai bien le nombre de commentaires mais le 'order by desc' ne fonctionne plus et le vccom_updated_at en résultat contient la date du premier commentaire et plus du dernier.
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT COUNT (vccom_id) as nbr_commentaire , c.raison, DATE_FORMAT(vccom_updated_at, '%d %b %Y à %T' ) as vccom_updated_at, vc.visite_id FROM visite_client_commentaire vcc LEFT JOIN user u ON u.id = vcc.vccom_user_id LEFT JOIN visite_client vc ON vc.id = vcc.vccom_vicl_id LEFT JOIN client c on c.id = vc.client_id WHERE vc.visite_id = 69086 AND vc.client_id = 5 ORDER by vcc.vccom_updated_at DESC LIMIT 0,1
J'ai essayé avec des GROUP BY mais ça ne change rien.
Quelqu'un aurait une idée ? (je me doute qu'il y a un tourne autour en plaçant le COUNT dans une sous-requête mais j'aimerai surtout comprendre le problème et voir s'il n'y a pas une solution plus simple et optimisée)
Merci d'avance
Partager