مرحبًا، أحاول إنشاء استعلام لشارة (Badge Query) يمنح شارة عند رد شخص على منشور غير مدرج (UNLISTED).
للأسف، يبدو أن الاستعلام العادي يتجاهل المنشورات “غير المدرجة” لسبب ما ولا يمنح الشارات.
إليك الاستعلام المعني، وهو نفس الاستعلام المذكور أعلاه:
SELECT
DISTINCT ON (p.user_id)
p.user_id, p.id post_id, p.created_at granted_at
FROM badge_posts p
WHERE p.topic_id = 81 AND -- 81 هو الموضوع الذي أريده
(:backfill OR p.id IN (:post_ids) )
وهذا هو الخطأ الذي أحصل عليه:
لا توجد شارات لتعيينها.
Unique (cost=25.87..25.88 rows=2 width=16)
-> Sort (cost=25.87..25.87 rows=2 width=16)
Sort Key: p.user_id
-> Hash Join (cost=6.73..25.86 rows=2 width=16)
Hash Cond: (t.category_id = c.id)
-> Nested Loop (cost=4.32..23.44 rows=4 width=20)
-> Index Scan using topics_pkey on topics t (cost=0.14..8.16 rows=1 width=8)
Index Cond: (id = 81)
Filter: ((deleted_at IS NULL) AND visible)
-> Bitmap Heap Scan on posts p (cost=4.18..15.24 rows=4 width=20)
Recheck Cond: (topic_id = 81)
Filter: ((deleted_at IS NULL) AND (post_type = ANY ('{1,2,3}'::integer[])))
-> Bitmap Index Scan on index_posts_on_topic_id_and_sort_order (cost=0.00..4.17 rows=4 width=0)
Index Cond: (topic_id = 81)
-> Hash (cost=2.21..2.21 rows=16 width=4)
-> Seq Scan on categories c (cost=0.00..2.21 rows=16 width=4)
Filter: (allow_badges AND (NOT read_restricted))
كيف يمكنني تعديل استعلامي لعدم تجاهل المنشورات غير المدرجة؟
شكرًا جزيلاً لوقتك.