테이블이 3 개인 경우 posts
, tags
, post_tag
이라고 가정합니다. posts
과 tags
사이에는 m : n 관계가 있으며, 연결에는 post_tag
이 사용됩니다.다중 조인으로 계산
특정 태그 쌍이있는 게시물 수를 어떻게 계산 하시겠습니까? 예를 들어 '뉴스'와 '추천'으로 태그가 지정된 게시물의 수를 계산 하시겠습니까?
테이블이 3 개인 경우 posts
, tags
, post_tag
이라고 가정합니다. posts
과 tags
사이에는 m : n 관계가 있으며, 연결에는 post_tag
이 사용됩니다.다중 조인으로 계산
특정 태그 쌍이있는 게시물 수를 어떻게 계산 하시겠습니까? 예를 들어 '뉴스'와 '추천'으로 태그가 지정된 게시물의 수를 계산 하시겠습니까?
에 대한 EXISTS
를 사용합니다. 그것을 해결할 수있는 많은 방법이 있습니다. standard many-to-many implementation 가정
는 , 이것은 가장 빠르고 간단한 사이에 있어야한다 : 적어도 두 주어진 태그 게시물을 세고
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');
. 동일한 게시물에 대해 더 많은 태그가있을 수 있습니다.
우리는이 관련된 질문에서 기술의 무기고를 조립했다 :
@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')
편집 질문을하고 샘플 데이터, 원하는 결과를 제공하고, 문제를 해결하기 위해 당신의 시도. –