Partage
  • Partager sur Facebook
  • Partager sur Twitter

Classé plusieurs champs avec SQL ?

Sujet résolu
    15 novembre 2010 à 22:52:17

    Bonjour

    Petit nouveau, je cherche pour terminer mon forum à afficher la liste des sujets sur ma page...
    jusque la...

    j'ai la catégorie 964, 993, 996, 997 etc...
    j'ai plusieurs sujets (ou titre )dans chaque catégorie (parfois les memes quand il y a des reponses)
    j'ai les messages avec leurs expéditeurs...


    Je veux afficher seulement le titre qui a été a l'origine de la conversation, et que la liste soient classée par ordre d'arrivée...

    Avec SELECT (*) FROM forum ORDER BY id DESC, j'obtiens tous les messages classé par id OK
    Avec SELECT (*) FROM forum ORDER BY id DESC GROUP BY titre, j'obtiens ce que je veux sauf que je n'ai pas l'instigateur de la conversation.... :(


    un peu d'aide serait la bienvenue !

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      15 novembre 2010 à 22:55:51

      ...order by id asc,titre asc

      tu peux les ajouter à la suite
      • Partager sur Facebook
      • Partager sur Twitter
        16 novembre 2010 à 0:15:25

        c'est deja mieux, mais comment obtenir le 1er message seulement de chaque titre ?
        merci beaucoup.
        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2010 à 0:47:27

          Ça se fera probablement avec GROUP BY, mais il manque des informations pour répondre.

          Donne-nous la structure des tables qui entrent en jeu dans ta requête, un jeu d'essai et le résultat attendu en fonction du jeu d'essai. Ainsi, il sera beaucoup plus facile de te répondre.

          Note que ce genre de sujet devrait plutôt être placé dans le forum Base de données, je déplace.
          • Partager sur Facebook
          • Partager sur Twitter
            16 novembre 2010 à 0:52:32

            Ma BDD se compose des champs suivants...
            CATEGORIE SUJET MESSAGE DATE EXPEDITEUR

            et je souhaite obtenir si possible...
            Le 1er message de chaque sujet avec sa catégorie, tout cela classé par date ...?! :euh:

            possible ?
            • Partager sur Facebook
            • Partager sur Twitter
              16 novembre 2010 à 1:09:52

              Avec MySQL, il va falloir que tu fasses une jointure de ta table :

              SELECT F1.categorie, F1.sujet, F1.message, F1.date, F1.expediteur
              FROM forum F1
              INNER JOIN (
                  SELECT sujet, MIN(DATE) AS minDate
                  FROM forum
                  GROUP BY sujet
                  ) F2
                  ON F1.sujet = F2.sujet
                  AND F1.date = F2.minDate
              ORDER BY F1.date ASC, F1.titre ASC;
              


              La requête devrait ressembler à ceci. Par contre, normalement, on sépare les données en plusieurs tables et on utilise des foreign keys pour faire référence à chaque partie.
              Je te suggère de lire un tutoriel sur le SQL, tu peux te diriger vers un site comme sqlpro.developpez.com.
              • Partager sur Facebook
              • Partager sur Twitter
                16 novembre 2010 à 1:23:32

                je vais continuer a chercher... la journée complète pour rien... je m'arrache les cheveux...
                Merci pour ton temps mais c'est idem qu'avant c'est classé mais j'ai tous les messages et pas seulement le 1er...
                • Partager sur Facebook
                • Partager sur Twitter
                  16 novembre 2010 à 1:29:52

                  Le problème vient sûrement de la condition de la jointure, qui est trop vague. Normalement, on utilise une clé primaire (unique par définition). Je suppose qu'un même sujet peut se retrouver plusieurs fois dans ta table, et plusieurs fois par jour. Ça fausse les résultats.

                  On utilise généralement une colonne id auto incrémentée comme clé primaire. Dans ce cas-ci, il suffirait de faire la jointure avec cet id pour éviter à coup sûr les doublons.

                  Bref, la racine du problème vient de la conception de ta base de données. C'est une étape très importante lors de la création d'un site web (je dirais même la plus importante). Je te suggère fortement d'aller faire un tour sur le site que je t'ai donné un peu plus haut pour apprendre comment concevoir tes tables correctement.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Classé plusieurs champs avec SQL ?

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown