2010-02-16 2 views
1

У меня есть четыре таблицы.Нужна помощь по запросу JOIN, который почти работает

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 | 
+---------+-----------+ 

Я хочу, чтобы иметь возможность выбрать сообщения, но иметь это в результате

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

Что-то вроде

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 

Проблема Я бегу в это не возвращаются правильное количество комментариев. Вместо этого он, кажется, возвращает количество тегов. Пожалуйста, посоветуйте, спасибо за ваше время :)

ответ

1

попробовать COUNT (отчетливый comments.id)

+0

Awesome, что работал :) Спасибо – axsuul

Смежные вопросы