Bonjour;
Je suis penché sur la création d'un système forums et j'ai pas mal de soucis pour l'instant côté SQL.
J'essaie de faire la requête suivante :
" Ordonner les sujets d'un forum selon leur type, puis la date de la dernière réaction sur un sujet et enfin la date de la création d'un sujet ".
Comme solution primaire, j'ai élaboré la requête SQL suivante :
Il se voit que ce que je fais dans cette dernière c'est une jointure de trois table qui sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT Post.id_post, titre_post, resolu_post, slug_post, aff_post, etat_post, type_post, horaire_post, Post.id_user, pseudo, type, MAX(id_reponse) AS der_reponse, MAX(horaire_reponse) AS hr_der_reponse, COUNT(id_reponse) AS nbr_reponses FROM posts as Post NATURAL JOIN users LEFT JOIN reponses ON reponses.id_post=Post.id_post WHERE id_forum=2 GROUP BY Post.id_post ORDER BY type_post DESC , hr_der_reponse DESC ,horaire_post DESC LIMIT 0,10
1- posts
2- users
3- reponses
Détails:
- type_post (integer) : représente le type du post ==> critère d'ordonnancement : du plus grand vers le plus petit.
- hr_der_reponse et horaire_post (integer /*timestamp*/) ===>critère d'ordonnancement : de la date la plus récente vers la plus ancienne.
Problèmatique:
Pour tout les cas possibles cette requête semblait bien marcher sauf pour le cas où j'ai un post où aucune réponse y figure ! ===> il se place tout à la fin de ma liste que qu'en fait il devait se plaçait là où il doit suivant sont type d'abord puis sa date de création seulement.
Bon c'est logique puisque, le post n'a aucune réponse donc y a pas de "hr_der_reponse" qui représente la date de la dernière réaction dans sur ce post.
Question(s):
Y'aurait-il une astuce pour éviter ça en SQL?
Merci en avance pour votre aide
Partager