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 :
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
Il se voit que ce que je fais dans cette dernière c'est une jointure de trois table qui sont :
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