problème sur une requête mysql

atomikado
WRInaute discret
WRInaute discret
 
Messages: 160
Inscription: 22 Sep 2003

problème sur une requête mysql

Message le Ven Oct 05, 2007 10:49

Bonjour,

Admettons une table 'membres' reliée à une table 'annnonces' par un champ appelé 'id_membre'
Chaque membre peut avoir plusieurs annonces.

Dans la table 'membres', j'enregistre l'id en auto_increment, le prénom et le nom du membre
Dans la table 'annonces', j'enregistre l'id du membre (id_membre), et la date de l'annonce (date_annonce) et le texte de l'annonce (texte)

En mysql, je veux récupérer le nom et le prénom de chaque membre, ainsi que la dernière annonce publiée par chaque membre
Je fais :

SELECT membres.prenom, membres.nom, MAX(annonces.date_annonce), annonces.texte
FROM annonces
LEFT JOIN membres ON membres.id=annonces.id_membre
GROUP BY membres.id

Le problème, c'est que cela me sélectionne bien la date de la dernière annonce, mais le texte de la première annonce publiée par le membre !!!

Comment dois je faire pour récupérer le texte de la dernière annonce ? (en 1 seule requète si possible)

Merci !

jexl
WRInaute discret
WRInaute discret
 
Messages: 224
Inscription: 23 Juin 2005

Message le Ven Oct 05, 2007 11:00

Hello, voici ce que j'aurai fait :

Code: Tout sélectionner
SELECT
M.prenom, M.nom,
A.date_annonce, A.texte
FROM
membres M
LEFT JOIN
(SELECT
date_annonce, texte
FROM annonces
ORDER BY
date_annonce DESC) A
ON
M.id = A.id_membre


@+

atomikado
WRInaute discret
WRInaute discret
 
Messages: 160
Inscription: 22 Sep 2003

Message le Ven Oct 05, 2007 11:29

Non, cela ne fonctionne pas :(
Je pensais utiliser HAVING dans la requete, ms ss succès non plus

jexl
WRInaute discret
WRInaute discret
 
Messages: 224
Inscription: 23 Juin 2005

Message le Ven Oct 05, 2007 11:50

Comment ca, cela ne fonctionne pas ? Qu'est ce que tu as comme message d'erreur

duplex13
WRInaute discret
WRInaute discret
 
Messages: 170
Inscription: 30 Juin 2005

Message le Ven Oct 05, 2007 13:02

Si c'est avec mysql 5, l'utilisation des sous-requêtes est possible :

SELECT M1.prenom, M1.nom, A1.date_annonce, A1.texte
FROM annonces A1, membres M1
Where M1.id=A1.id_membre
And A1.date_annonce = (Select Max(A2.date_annonce) From annonces A2 Where A2.id_membre = M1.id)


cf Sous-requêtes corrélées :
http://dev.mysql.com/doc/refman/5.0/fr/ ... eries.html


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités