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 :

GROUP BY, critère sur la ligne sélectionnée


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut GROUP BY, critère sur la ligne sélectionnée
    J'ai créé un forum et j'aimerais créer une requête me permettant de sélectionner la date du dernier message posté sur une discussion et le nom de son auteur.

    J'ai une table forum_post, forum_topic et forum_group.
    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
    20
    21
    22
    23
    24
    25
    26
    27
    DROP TABLE IF EXISTS forum_post;
    CREATE TABLE forum_post (
    forum_post_id INT AUTO_INCREMENT PRIMARY KEY,
    forum_post_date DATETIME,
    forum_post_userid INT,
    forum_post_topicid INT,
    forum_post_article TEXT
    );
     
    DROP TABLE IF EXISTS forum_topic;
    CREATE TABLE forum_topic (
    forum_topic_id INT AUTO_INCREMENT PRIMARY KEY,
    forum_topic_date DATETIME,
    forum_topic_userid INT,
    forum_topic_groupid INT,
    forum_topic_title VARCHAR(255)
    );
     
    DROP TABLE IF EXISTS forum_group;
    CREATE TABLE forum_group (
    forum_group_id INT AUTO_INCREMENT PRIMARY KEY,
    forum_group_date DATETIME,
    forum_group_userid INT,
    forum_group_groupid INT,
    forum_group_title VARCHAR(255),
    forum_group_desc VARCHAR(255)
    );
    Les messages sont stockés dans la table forum_post.
    Les discussions sont stockées dans la table forum_topic.
    Les forum sont stockés dans la table forum_group.

    Pour le moment, j'arrive à sélectionner la date du dernier message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *,MAX(forum_post_date) as md
    FROM forum_topic
    LEFT JOIN forum_post ON forum_topic_id=forum_post_topicid
    WHERE forum_topic_groupid=3
    GROUP BY forum_topic_id
    ORDER BY md DESC,forum_topic_date DESC
    LIMIT 0,20;
    WHERE forum_topic_groupid=3 : j'indique le n° du topic (3 n'est qu'un exemple)

    Mon problème est que je n'arrive pas à sélectionner le nom (où plutôt forum_post_userid) du dernier auteur sur une discussion particulière.

    Pour obtenir la date,
    je groupe les messages par topic : GROUP BY forum_topic_id
    Je sélectionne la date avec MAX(forum_post_date)

    Lors du groupement, une seule ligne n'est sélectionnée.
    J'aimerais que cette ligne soit celle correspondant au message le plus récent.

    La requête que j'ai faite fonctionne pour la date, mais pas pour forum_post_userid.

    Est-il possible de faire en sorte que lors du groupement, les messages soient triés par date ?
    Ainsi, la ligne affichée corespondrait au dernier message posté pour une discussion.

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Merci de lire les Conseils à lire avant de poster

    Citation Envoyé par Fred_D
    Ce forum est dédié au langage SQL, merci donc de bien vouloir vous limiter à celui-ci lors de la citation de votre code. Notamment le code PHP, étant difficilement lisible pour les profanes veuillez l'éviter

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

Discussions similaires

  1. [XL-2003] Recherche de plusieurs critères sur plusieurs lignes puis addition du nombre
    Par iIncoming dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/03/2014, 06h45
  2. [MVVM] Datagrid Focus sur une ligne sélectionnée
    Par draco951 dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 17/06/2013, 11h36
  3. Recherche avec critères sur plusieurs lignes
    Par affro-jojo dans le forum Requêtes
    Réponses: 10
    Dernier message: 28/06/2011, 19h36
  4. Réponses: 3
    Dernier message: 19/01/2010, 17h22
  5. Réponses: 8
    Dernier message: 27/07/2009, 17h38

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