Hello tout le monde. Donc j'ai les deux tables suivantes :
R1
----------
id | time
----------
1 | 5
2 | 6
2 | 7
3 | 8
R2
-----------
id | titre
-----------
1 | Salut
2 | Bonjour
3 | Hello
Sujet : On veut récupérer le titre le plus récent, plus un titre est récent plus 'time' augmente. Par exemple "Hello" est plus vieux que "Salut"
On aurait donc le résultat suivant :
-------------
time | titre
-------------
5 | Hello
7 | Bonjour
8 | Salut
/!\ On veut éliminer les redondances de titre !
Donc la solution suivante n'est en aucun cas envisageable :
-------------
time | titre
-------------
5 | Hello
6 | Bonjour
7 | Bonjour
8 | Salut
MA REQUETE :
SELECT DISTINCT R2.titre, R1.time
FROM from R1, R2
WHERE R1.id=R2.id
GROUP BY R2.titre, R1.time
ORDER BY R1.time DESC
LIMIT 5
Donc avec cette méthode on trouve la solution que je ne veux pas trouver :
-------------
time | titre
-------------
5 | Hello
6 | Bonjour
7 | Bonjour
8 | Salut
/!\ On voit bien que le DISTINCT n'a pas 'agit'
Sinon j'ai trouvé la requete SQL qui permet d'enlever ces redondances, cependant pour se faire je ne récupère pas le temps...
SELECT DISTINCT R2.titre
FROM R1, R2
WHERE R1.id=R2.id
GROUP BY R1.time
ORDER BY R1.time DESC
LIMIT 5
et on trouve donc le résultat suivant
-------------
titre
-------------
Hello
Bonjour
Salut
PS :
En fait c'est la bdd de phpBB, et je cherche à récupérer les 5 derniers topics où les personnes ont posté pour la dernière fois, ainsi que la date à laquelle ils ont posté.
Si vous préférez voici les deux requetes avec les champs / tables de phpBB :
SELECT DISTINCT (FT.topic_title), FP.post_time
FROM forum_topics FT, forum_posts FP
WHERE FT.topic_id = FP.topic_id
GROUP BY FT.topic_title, FP.post_time
ORDER BY FP.post_time DESC
LIMIT 5
SELECT DISTINCT FT.topic_title
FROM forum_topics FT, forum_posts FP
WHERE FT.topic_id = FP.topic_id
GROUP BY FP.post_time
ORDER BY FP.post_time DESC
LIMIT 5
Les résultats en image :
Merci d'avance pour l'aide.
Message édité par stannie le 27-07-2007 à 13:23:32