2010-02-16 5 views
1

J'ai quatre tables.Besoin d'aide sur une requête JOIN qui fonctionne presque

posts 
| id  | title  | 
+---------+-----------+ 
| 1  | hello  | 
| 2  | goodbye | 
+---------+-----------+ 

posts_tags 
| tag_id | post_id | 
+---------+-----------+ 
| 1  | 1   | 
| 2  | 1   | 
| 2  | 2   | 
+---------+-----------+ 

comments 
| id  | post_id | comment | 
+---------+------------+-----------+ 
| 1  | 1   | hey  | 
| 2  | 2   | what up | 
| 3  | 2   | blah  | 
+---------+------------+-----------+ 

tags 
| id  | name  | 
+---------+-----------+ 
| 1  | news  | 
| 2  | photos | 
+---------+-----------+ 

Je veux être en mesure de sélectionner les messages, mais cette suite

post.id post.title tags    comments 
----------------------------------------------------- 
1   hello   news,photos  1 
2   goodbye  photos   2 

Quelque chose comme

SELECT *, 
     GROUP_CONCAT(tags.name) AS tags, 
     COUNT(comments.id) AS comments 
FROM posts 
    LEFT JOIN comments 
     ON posts.id = comments.post_id 
    LEFT JOIN posts_tags 
     ON posts.id = posts_tags.post_id 
    LEFT JOIN tags 
     ON posts_tags.tag_id = tags.id 
GROUP BY posts.id 

Le problème que je suis en cours d'exécution en est-il ne revient pas le nombre approprié de commentaires. Au lieu de cela, il semble retourner le nombre de tags. S'il vous plaît conseiller, merci pour votre temps :)

Répondre

1

essayer comptage (comments.id distinct)

+0

impressionnant, qui a travaillé :) Merci – axsuul