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....
Ç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.
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.
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...
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.
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.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales