okky 회원님
333
2019-07-12 16:37:06 작성 2019-07-12 16:40:52 수정됨
1
82

해시태그 검색(여러개) 관련 질문


방금 이상하게 질문해서 죄송합니다. (_ _)

단순히 IN의 반대면 될거라고 생각했습니다.. 


아래와 같은 태그 & 글 구조를 설계했습니다.


아래와 같은 태그가 있습니다.

tag_idname
1강아지
2고양이
3고슴도치


만약 제가 강아지를 태깅한 게시글을 검색할땐

아래와 같이 쿼리를 작성합니다.


#강아지 <= O

#고양이  <= X

#고슴도치 <=X

#강아지#고양이 <= O

#강아지#고양이#고슴도치 <= O 


SELETE post.* 
FROM post_tag
JOIN post ON post.post_id = post_tag.post_id
WHERE post_tag.tag_id = 1 //강아지



만약 제가 강아지나 고양이를 태깅한 게시글을 검색할땐

아래와 같이 쿼리를 작성합니다.


#강아지 <= O

#고양이  <= O

#고슴도치 <= X

#강아지#고양이 <= O

#강아지#고양이#고슴도치 <= O


SELETE post.* 
FROM post_tag
JOIN post ON post.post_id = post_tag.post_id
WHERE post_tag.tag_id IN (1,2) //강아지 OR 고양이



강아지와 고양이 모두를 태깅한 게시글을 찾을려면 어떻게 해야하나요?

혹시 관련 키워드나 글이 있다면 알려주시면 감사하겠습니다..

어떻게 해야될지 감이 안오네요


#강아지 <= X

#고양이  <= X

#고슴도치 <=X

#강아지#고양이 <= O

#강아지#고양이#고슴도치 <= O 

0
0
  • 답변 1

  • okky 회원님
    333
    2019-07-12 17:36:32 작성 2019-07-12 17:37:35 수정됨


    SELECT post.* 
    FROM post_tag
    JOIN post ON post.post_id = post_tag.post_id
    WHERE post_tag.tag_id IN (1,2)
    GROUP BY post_tag.post_id
    HAVING (COUNT(post_tag.tag_id) = 2); // 2는 태그의 개수에 따라서 달라집니다


    이렇게 하면 가능합니다.. 다만 이제 페이지처리를 위해 count를 세야하는데 흠...

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.