テーブルが3つあると仮定すると、posts
,tags
、post_tag
となります。 posts
とtags
の間にはm:nの関係があり、接続にはpost_tag
が使用されています。複数の結合によるカウント
特定のタグのペアを持つ投稿の数をどのように数えますか?たとえば、「ニュース」と「おすすめ」の両方でタグ付けされた投稿の数を数えますか?
テーブルが3つあると仮定すると、posts
,tags
、post_tag
となります。 posts
とtags
の間にはm:nの関係があり、接続にはpost_tag
が使用されています。複数の結合によるカウント
特定のタグのペアを持つ投稿の数をどのように数えますか?たとえば、「ニュース」と「おすすめ」の両方でタグ付けされた投稿の数を数えますか?
ため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を仮定すると、これは最速かつ最も簡単なの一つである必要があります。同じ投稿に複数のタグがある可能性があります。
私たちは、この関連の質問の下で技術の工廠を組み立てています
@a_horse_with_no_name:ありがとうございました。 –
は、単にこれは関係部門の場合であること
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')
編集あなたの質問をし、サンプル・データ、望ましい結果を提供し、問題を解決するために、あなたの試み。 –