[MYSQL] requete avec dissociation

requete avec dissociation [MYSQL] - SQL/NoSQL - Programmation

Marsh Posté le 27-12-2004 à 20:23:20    

Bonjour à tous,
 
voila les bases avec lesquelles je travaille (celle de PHPBB).
j'ai donc une base post qui contient le post + le numero du topic + le numero du forum
Une base topic qui contient des infos sur le topic
Une base forum qui contient des infos sur le forum
 
Mon objectif est de récupéré les 5 derniers topics actifs (ceux qui ont eu un message).
 
J'ai donc pondu ca : (j'evite deux forum qui ne doivent pas être montrés)
 
SELECT * FROM posts WHERE forum_id<>'10' AND forum_id<>'17' ORDER BY 'post_time' DESC LIMIT 0,5
 
Il me recupere bien les 5 derniers posts sauf qu'il peuvent etre dans des topics identiques...
 
J'ai donc essayé ca :
 
SELECT * FROM posts WHERE forum_id<>'10' AND forum_id<>'17' GROUP BY 'topic_id' ORDER BY 'post_time' DESC LIMIT 0,5
 
Alors il me selectionne bien 5 messages dans des topics differents sauf que ce n'est plus les derniers mais les premiers des topics.
 
Comment dois-je ecrire ma formule pour obtenir les 5 derniers posts qui ne sont pas dans le même topic mais qui sont bien les 5 derniers ?
 
J'espère que j'ai été clair, sinon je donnerais plus en détail la structure des tables.
 
Merci d'avance

Reply

Marsh Posté le 27-12-2004 à 20:23:20   

Reply

Marsh Posté le 29-12-2004 à 03:34:44    

vu que ta base post contient également l'id du topic, t'a pas moyen plutot qu'un select * de faire un DISTINCT topic_id, et puis les autres champs dont tu as besoin ?
EDIT: au fait par base, tu veux vraiment dire "base" ou plutot "table" ???


Message édité par Xav_ le 29-12-2004 à 03:36:19

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 29-12-2004 à 11:14:34    

same idea => "distinct" devrait regler ton pb

Reply

Marsh Posté le 29-12-2004 à 11:48:41    

SELECT * FROM posts WHERE forum_id<>'10' AND forum_id<>'17' GROUP BY 'topic_id' ORDER BY 'post_time' ASC LIMIT 0,5  
 
:??:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed