Voici un copier-coller d'une discution sur un autre forum qui résume très bien mon problème mais qui n'à recu aucune solution. (Je donnerais bien le lien mais ca serait de la pub donc je copie-colle)

KosMos
Posté le: 28 Déc 2004, 12:58 Sujet du message: Mysql - Limit et left join Bonjours à tous, me voila confronté à un problème assez particulier... :

Je dispose d'une table articles, contenant des... articles et composé des champs suivants :

id | type | title | resume | text | date | author_id

Ainsi que d'une table comments contenant les commentaires des dits articles et composé des champs suivants :

id | article_id | name |text | date

Je cherche à récuperer les 8 premiers articles de la tables ainsi que les commentaires correspondants à chaque articles. Voici donc ma requette mysql :

SELECT a.id,a.title,a.resume,a.date,
c.id AS c_id,c.name AS c_name,c.text AS c_text,c.date AS c_date
FROM articles AS a
LEFT JOIN comments AS c ON c.article_id=a.id
ORDER BY a.id DESC
LIMIT 8

Cependant, le LIMIT s'applique sur le nombre de champs retournés, et non sur le nombre d'article. Si un premier article comporte 5 commentaires, et le suivant 3, la requette ne retournera que ces deux la.
Impossible de faire un GROUP BY a.id, car je n'aurais alors accès qu'au premier commentaire de chaque article.
Impossible de se débrouiller avec un GROUP BY c.id, puisque si deux articles ne comportent pas de commentaires, ils seront groupés ensemble !

Je suis complètement dérouté face à se problème, si quelqu'un pouvais m'éclairer, je lui en serait très reconaissant.
je comprend le fonctionnement du limit, mais comment faire pour réellement limiter les messages 'normalement' ?

Dans mon cas, les messages ont des destinataires.
Il peut y avoir 1 destinataire, 10, 134, etc... infini quoi.

Donc si je veux afficher 100 messages sur ma page, il m'affichera seulement le ou les message envoyé aux premier 100 destinataires.

Donc au lieu d'avoir 100 messages, je me retrouve avec 10 messages de 10 destinataires chacun par exemple.

Les destinataires étant totalement aléatoire, je ne peux pas placer un facteur de correction sur les chiffres du limit .. :-\