지정된 카테고리 ID의 특정 조건에 맞는 모든 게시글 가져오기

특정 키워드를 포함하는 내 사이트의 모든 게시물을 가져오는 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

WHERE 절을 확장하여 topic_idcategory_id 컬럼이 있는 topics 테이블과 대조하여 검색해야 했습니다.

-- [params]
-- int :category_id
-- string_list :first_list_of_keywords
-- null string_list :second_list_of_keywords

WITH FirstFilter AS (
    SELECT * 
    FROM posts 
    WHERE topic_id IN (
        SELECT id FROM topics WHERE category_id = :category_id
    ) AND 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 (
        -- Ensure there is NO missing keyword in the post text
        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

감사합니다. 작동했습니다.