2017-11-04 11 views
0

테이블이 3 개인 경우 posts, tags, post_tag이라고 가정합니다. poststags 사이에는 m : n 관계가 있으며, 연결에는 post_tag이 사용됩니다.다중 조인으로 계산

특정 태그 쌍이있는 게시물 수를 어떻게 계산 하시겠습니까? 예를 들어 '뉴스'와 '추천'으로 태그가 지정된 게시물의 수를 계산 하시겠습니까?

+5

편집 질문을하고 샘플 데이터, 원하는 결과를 제공하고, 문제를 해결하기 위해 당신의 시도. –

답변

0

에 대한 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'); 

. 동일한 게시물에 대해 더 많은 태그가있을 수 있습니다.

우리는이 관련된 질문에서 기술의 무기고를 조립했다 :

+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')