2017-11-04 14 views
0

テーブルが3つあると仮定すると、posts,tagspost_tagとなります。 poststagsの間にはm:nの関係があり、接続にはpost_tagが使用されています。複数の結合によるカウント

特定のタグのペアを持つ投稿の数をどのように数えますか?たとえば、「ニュース」と「おすすめ」の両方でタグ付けされた投稿の数を数えますか?

+5

編集あなたの質問をし、サンプル・データ、望ましい結果を提供し、問題を解決するために、あなたの試み。 –

答えて

0

ためEXISTSを使用しています。それを解決する方法はたくさんあります。

SELECT count(*) 
FROM post_tag pt1 
JOIN post_tag pt2 USING (post_id) 
WHERE pt1.tag_id = (SELECT tag_id FROM tags WHERE tag = 'news') 
AND pt2.tag_id = (SELECT tag_id FROM tags WHERE tag = 'featured'); 

少なくとも与えられた二つのタグで投稿を数えるということ:
standard many-to-many implementationを仮定すると、これは最速かつ最も簡単なの一つである必要があります。同じ投稿に複数のタグがある可能性があります。

私たちは、この関連の質問の下で技術の工廠を組み立てています

+0

@a_horse_with_no_name:ありがとうございました。 –

0

は、単にこれは関係部門の場合であること

select count(*) 
from posts 
where exists(select 1 from post_tag 
      join tag on post_tag.tid = tag.tid 
      where post_tag.pid = posts.pid and tag.name = 'news') and 
     exists(select 1 from post_tag 
      join tag on post_tag.tid = tag.tid 
      where post_tag.pid = posts.pid and tag.name = 'featured') 
関連する問題