2017-03-11 7 views
0

私は音楽のブログを構築しています。私はすべてのブログ投稿をリストする際に、各ブログ投稿が持つ好き嫌いやコメントの数を数えたいと思います。私は必要なテーブルを持っています。これは私が気づいた何複数のテーブルのカウントに参加

SELECT tbl_music.id, 
           tbl_music.name, 
           tbl_music.img, 
           tbl_music.date, 
           tbl_music.post, 
           COUNT(*) AS comms, 
           COUNT(*) AS liky 

         FROM tbl_music 

         LEFT JOIN tbl_mlikes 
         ON tbl_music.id = tbl_mlikes.mid 
         LEFT JOIN tbl_mus_coms 
         ON tbl_music.id = tbl_mus_coms.mid 
         WHERE tbl_music.status = 'Publish' 
         GROUP BY tbl_music.id 
         ORDER BY tbl_music.id 
         DESC 

はそれが好きなのカウント数とコメント数を乗算し、(同類すなわちの数として答えを提供することである私のクエリでのポストは4件のコメントなど1、私のクエリを持っている場合4つのコメントと4つのお気に入りを表示します)これは本当にイライラしています

答えて

0

問題は2つの異なる次元を持っているので、クエリは各音楽IDのデカルト積を作り出しています。

最善の解決策は、参加前を集約することである。

SELECT m.*, l.likes, c.comments 
FROM tbl_music m LEFT JOIN 
    (SELECT mid, COUNT(*) as likes 
     FROM tbl_mlikes 
     GROUP BY mid 
    ) l 
    ON m.id = l.mid LEFT JOIN 
    (SELECT mc.mid, COUNT(*) as comments 
     FROM tbl_mus_coms mc 
     GROUP BY mc.mid 
    ) c 
    ON m.id = c.mid 
WHERE m.status = 'Publish' 
ORDER BY m.id DESC ; 
+0

ライフセーバーを...ありがとう – dapo

関連する問題