IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

problème sur requête SQL


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 68
    Points : 47
    Points
    47
    Par défaut problème sur requête SQL
    Bonsoir,

    Je bloque sur une requête SQL qui semble être très simple

    voici ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    id 	idtopic 	timestamp 
    411 	40 	1292450871
    410 	51 	1292449540
    409 	62 	1292437093
    408 	62 	1292430193
    407 	62 	1292427069
    406 	62 	1292425813
    405 	62 	1292423719
    404 	47 	1292421993
    403 	62 	1292421481
    402 	61 	1292421202
    401 	62 	1292421137
    400 	47 	1292417818
    399 	62 	1292417635
    398 	61 	1292415769
    397 	62 	1292415695
    396 	40 	1292415270
    395 	62 	1292415229
    c'est une table d'un forum où id est l'identifant du message, idtopic l'identifiant du topic et timestamp la date du message.

    je voudrais récupérer les 10 topics les plus récents avec le dernier message pour chaque topic

    voici ma requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT msg.idtopic,msg.id,msg.timestamp
    FROM phpboost_forum_msg msg
    GROUP BY msg.idtopic
    ORDER BY max(msg.timestamp) DESC
    LIMIT 0,10
    ce qui me renvoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    idtopic 	id 	timestamp
    40 	327 	1291896478
    51 	291 	1291803838
    62 	389 	1292410789
    47 	400 	1292417818
    61 	402 	1292421202
    49 	390 	1292411183
    60 	368 	1292215364
    58 	347 	1292005645
    28 	131 	1291115526
    55 	341 	1291968803
    ce qui me renvoi bien mes 10 dernier topic mis à jour par mais pas le dernier message du topic.

    je suis sûr qu'il un tout petit truc.

    Merci à tous pour votre aide !!!!

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 949
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 949
    Points : 5 848
    Points
    5 848
    Par défaut
    D'abord ta requête n'est syntaxiquement pas valide.
    Certes MySql ne te renvoie pas d'erreur et exécute la requête mais c'est une simplification extreme de MySql (hasardeuse à mon sens) qui techniquement peut te renvoyer n'importe quel id du topic, ce que tu as constaté.
    A lire au sujet du GROUP BY dans MySql :

    Donc il faut d'abord récupérer la liste des 10 topics les plus récents (la sous-requête), puis revenir sur la table récupérer le message le plus récent correspondant au topic (le JOIN):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select t.idtopic,msg2.id,t.max_timestamp
    from phpboost_forum_msg msg2
    JOIN (SELECT msg.idtopic,max(msg.timestamp) as max_timestamp
    	FROM phpboost_forum_msg msg
    	GROUP BY msg.idtopic
    	ORDER BY max(msg.timestamp) DESC
    	LIMIT 0,10
    	) as t
    	ON msg2.idtopic = t.idtopic and msg2.timestamp = t.max_timestamp
    ORDER BY t.max_timestamp DESC

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    merci infiniment pour ton aide, finalement ce n'était pas aussi simple que je le pensais, mais je pense avoir compris la jointure.

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème sur requête sql
    Par titeufdev dans le forum SQL
    Réponses: 15
    Dernier message: 29/12/2010, 12h28
  2. Problème sur requête sql
    Par titeufdev dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/12/2010, 00h09
  3. Problème sur requête SQL
    Par oskour dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2010, 14h22
  4. Problème sur Requête sql
    Par devdev dans le forum Développement
    Réponses: 1
    Dernier message: 16/06/2009, 11h24
  5. Problème sur requête SQL (Caféine)
    Par Jean-Pierre49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2007, 08h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo