لقد قمت بتطوير استعلام SQL يحصل على جميع المشاركات في موقعي التي تحتوي على كلمات رئيسية معينة، ولكني أود تقييد المشاركات بمعرف فئة معين. هل يعرف أي شخص كيف أفعل ذلك بالنظر إلى أن (كما يبدو) category_id ليس أحد الحقول في جدول “posts”؟ إليك استعلامي (الذي قمت بتشغيله وهو يعمل بشكل جيد ولكنه يسحب من جميع المشاركات وأريد فقط المشاركات من فئة واحدة):
-- [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 (
-- 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