2016-10-18 6 views
0

私は2つのデータベーステーブル "blog_posts"と "blog_comments"を持っています。MySQLの結合とCOUNT()はすべてのレコードを返さない

blog_posts:私はこれにコメントがない場合、それはcommentCountとして0を返すようにしたい

SELECT 
    blog_posts.*, 
    COUNT(blog_comments.commentID) AS commentCount 
FROM 
    blog_posts 
    LEFT JOIN blog_comments ON blog_posts.postID = blog_comments.post_id; 

postID | postTitle | postContent    | ... 
1  | Hello World | This is a blog post  | ... 
2  | Lorem Ipsum | This is another blog post | ... 
3  | Test Post | This is a third post  | ... 

blog_comments:

commentID | postID | comment | ... 
1   | 1  | Very cool | ... 
2   | 1  | Nice  | .. 

私の現在のSQLクエリがありますpostではなく、最初の投稿のみが返されます。これは、moにコメントを持つ唯一の投稿です。

どうすれば修正できますか?

ありがとうございました。

答えて

0

あなたはCOUNTを使用しています。これは、すべての行が1つに集約され、カウントが全体のセットで評価されることを意味します。

明示的に列をグループ化し、あなたは問題ないはず指定します

SELECT 
    blog_posts.*, 
    COUNT(blog_comments.commentID) AS commentCount 
FROM 
    blog_posts 
    LEFT JOIN blog_comments ON blog_posts.postID = blog_comments.post_id 
GROUP BY blog_posts.postID; 
+0

感謝を。それは働いている! – KingOfDog

+0

良いところで、StackOverflowへようこそ。あなたの答えがあなたの問題に対する解決策を見つけたら、それを "受け入れ"、および/またはアップアップしてください:http://stackoverflow.com/help/someone-answers –

+0

ありがとうございました。 :) – KingOfDog

関連する問題