¿Hay algún lugar donde pueda encontrar una consulta predefinida para actualizar likes_given y likes_received en la tabla user_stats? No estoy seguro de dónde debería provenir eso; probablemente algo basado en lo que hay en las tablas user_actions y posts.
Esto es para una migración en la que ya estoy utilizando algunas consultas que tomé de uno de los importadores, creo:
UPDATE posts SET like_count = coalesce(cnt,0)
FROM (
SELECT post_id, count(*) cnt
FROM post_actions
WHERE post_action_type_id = 2 AND deleted_at IS NULL
GROUP BY post_id
) x
WHERE posts.like_count <> x.cnt AND posts.id = x.post_id
UPDATE topics SET like_count = coalesce(cnt,0)
FROM (
SELECT topic_id, sum(like_count) cnt
FROM posts
WHERE deleted_at IS NULL
GROUP BY topic_id
) x
WHERE topics.like_count <> x.cnt AND topics.id = x.topic_id
Eso actualiza los recuentos de “Me gusta” en posts y topics, pero no en user_stats…
I’m using DBeaver, I can use UPDATE queries. I assumed “Data explorer” was just another equivalent DB client, sorry for my confusion. I guess this doesn’t belong here then, if an admin wants to split these posts into a separate thread, that’s ok. I suggest a title like Updating likes in user_stats via SQL.
I came up with the following, but I am not sure if they are correct, Id love to check by finding out some place where this is already made by someone more knowledgeable, but I can’t find it
UPDATE user_stats SET likes_given = coalesce(cnt,0)
FROM (
SELECT user_id, count(*) cnt
FROM post_actions
WHERE post_action_type_id = 2 AND deleted_at IS NULL
GROUP BY user_id
) x
WHERE user_stats.likes_given <> x.cnt
AND user_stats.user_id = x.user_id
UPDATE user_stats SET likes_received = coalesce(cnt,0)
FROM (
SELECT posts.user_id, SUM(posts.like_count) cnt
FROM post_actions
LEFT JOIN posts ON post_actions.post_id = posts.id
WHERE post_action_type_id = 2 AND post_actions.deleted_at IS NULL
GROUP BY posts.user_id
) x
WHERE user_stats.likes_received <> x.cnt
AND user_stats.user_id = x.user_id