すべての投稿と、閲覧回数、投稿数を返すクエリです。問題は、それが原因で他の重複を返されMysql join distinct
SELECT count(bv.postId) as views, SUM(if(vote=1, 1, 0)) as likes, SUM(if(vote=-1, 1, 0)) as meeh, GROUP_CONCAT(taxonomy_id) as target, GROUP_CONCAT(t.name) as tname, `t`.`type` as `ttype`, `users`.`fullname`, `users`.`picture`, `users`.`role`, `users`.`picture`, `blog`.* FROM `blog`
INNER JOIN `blog_taxonomy` `bt` ON `bt`.`blog_id` = `blog`.`id`
INNER JOIN `users` ON `users`.`id` = `blog`.`user_id`
INNER JOIN `taxonomy` `t` ON `t`.`id` = bt.`taxonomy_id`
LEFT JOIN `blog_views` `bv` ON `blog`.`id` = `bv`.`postId`
WHERE MONTH(blog.time_posted) = 4 AND `blog`.`deleted` =0 GROUP BY `blog`.`id` ORDER BY `blog`.`id` DESC
blog_viewsテーブルは、私がどのようなポストを見た人を追跡するために使用する単純なテーブルである私は、クエリに持って参加して、彼はそれを好きかどう
Table:blog_views
postId userId vote[int values, 1 for like, -1 for dislike and 0 default]
問題はビューの数は常にblog_taxonomyテーブルのn *カウントを返します!私はポストのタグを制御するために使用します。
Table blog_taxonomy:
taxonomy_id post_id
1 1
2 1
Table Taxonomy
id name
1 art
2 music
これは、タグと投稿をリンクするために使用される多対多のテーブルです。クエリから削除する問題を解決:(しかし、私はそこにそれを必要とする!
を私がして、グループでbv.postIdを追加しようとしたが、全く効果がないようです!通常で
、私ができます私がここで行方不明です何
select count(bv.postId) as views, SUM(if(vote=1, 1, 0)) as likes, SUM(if(vote=-1, 1, 0)) as meet from blog_views where postId = ?{blog.id}
group by postId
を使用してポストしたいビューのデータを取得する?
編集
サブクエリを使用すると問題が解決しました。なぜサブクエリメソッドが動作し、結合が機能しないのですか?私はあなたの分類テーブルにJOIN条件を理解して何から
SELECT bv.views, bv.likes, bv.meeh, GROUP_CONCAT(taxonomy_id) as target, GROUP_CONCAT(t.name) as tname, `t`.`type` as `ttype`, `users`.`fullname`, `users`.`picture`, `users`.`role`, `users`.`picture`, `blog`.* FROM `blog`
INNER JOIN `blog_taxonomy` `bt` ON `bt`.`blog_id` = `blog`.`id`
INNER JOIN `users` ON `users`.`id` = `blog`.`user_id`
INNER JOIN `taxonomy` `t` ON `t`.`id` = bt.`taxonomy_id`
LEFT JOIN (select count(*) as views,postId,SUM(if(vote=1, 1, 0)) as likes, SUM(if(vote=-1, 1, 0)) as meeh from `blog_views` group by postId) `bv` ON `bt`.`blog_id` = `bv`.`postId`
WHERE MONTH(blog.time_posted) = 4 AND `blog`.`deleted` =0 GROUP BY `blog`.`id` ORDER BY `blog`.`id` DESC
そこから 'taxonomy_id'はどこから来ますか? –
@KP。 blog_taxonomy – Zalaboza
あなた自身の質問に答えてくれたようです。あなたがまだ混乱している場合は、外部集計関数とgroup by節を使わずに同じクエリを実行します。 – Strawberry