특정 키워드를 포함하는 내 사이트의 모든 게시물을 가져오는 SQL 쿼리를 작성했습니다. 하지만 게시물을 특정 카테고리 ID로 제한하고 싶습니다. (해당하는 것으로 보아) posts 테이블의 필드에 category_id가 없는 상황에서 어떻게 해야 하는지 아는 분이 있을까요? 아래는 제가 실행해본 쿼리인데, 정상적으로 동작하지만 모든 게시물을 가져옵니다. 특정 카테고리의 게시물만 가져오고 싶습니다:
-- [params]
-- string_list :first_list_of_keywords
-- null string_list :second_list_of_keywords
WITH FirstFilter AS (
SELECT *
FROM posts
WHERE EXISTS (
SELECT 1
FROM UNNEST(ARRAY[:first_list_of_keywords]) AS s(word)
WHERE POSITION(LOWER(s.word) IN LOWER(posts.raw)) > 0
)
), SecondFilter AS (
SELECT *
FROM posts
WHERE NOT EXISTS (
-- 게시물 텍스트에 누락된 키워드가 없음을 보장
SELECT 1
FROM UNNEST(ARRAY[:second_list_of_keywords]) AS t(word)
WHERE POSITION(LOWER(t.word) IN LOWER(posts.raw)) = 0
)
)
SELECT p.*
FROM posts p
INNER JOIN FirstFilter f ON p.id = f.id
INNER JOIN SecondFilter s ON p.id = s.id