je les tableaux suivants:MySQL GROUP BY avec trois tables
posts (post_id, content, etc)
comments (comment_id, post_id, content, etc)
posts_categories (post_category_id, post_id, category_id)
et cette requête:
SELECT `p`.*
, COUNT(comments.comment_id) AS cmts
, posts_categories.*
, comments.*
FROM `posts` AS `p`
LEFT JOIN `posts_categories`
ON `p`.post_id = `posts_categories`.post_id
LEFT JOIN `comments`
ON `p`.post_id = `comments`.post_id
GROUP BY `p`.`post_id`
Il y a trois commentaires sur post_id = 1 et quatre au total. Dans posts_categories, il y a deux lignes, toutes deux affectées à post_id = 1. J'ai quatre rangées dans les messages. Mais si j'interroge l'instruction ci-dessus, j'obtiens un résultat de 0 pour COUNT(comments.comment_id)
à post_id = 1. Comment est-ce possible? Je suppose que l'erreur est quelque part dans la clause GROUP BY mais je ne peux pas savoir où.
Des suggestions?
Dans mysql, il n'est pas nécessaire de lister tous les champs dans GROUP BY, mais cela entraîne les problèmes décrits ci-dessus avec le nombre – Unreason
Qu'en est-il de l'attribut post_category_id? Avez-vous essayé la requête. Si vous ne comprenez pas ce que je veux dire, regardez la réponse de @Adam Bernier. – lexu
Ne fonctionne pas pour moi, j'ai omis GROUP_CONCAT pour faciliter la recherche. Merci quand même – Psaniko