Ayuda para modificar una consulta para devolver nombres de usuario en lugar de números de ID de usuario

¡Hola! Estoy buscando un poco de ayuda para modificar una consulta y que devuelva nombres de usuario en lugar de números de ID de usuario.

Esto es lo que he estado usando hasta ahora (modificado del excelente hilo Gráfico de red de @DavidGNavas):

WITH pairs AS (
    SELECT p.user_id liked, pa.user_id liker
    FROM post_actions pa
    LEFT JOIN posts p ON p.id = pa.post_id
    LEFT JOIN topics t ON t.id = p.topic_id
    LEFT JOIN categories c ON c.id = t.category_id
    WHERE post_action_type_id = 2
    AND c.id = 47
)
SELECT liker liker_user_id, liked liked_user_id, count(*)
FROM pairs
GROUP BY liked, liker
ORDER BY count DESC

Luego he utilizado una búsqueda de referencia (vlookup) muy engorrosa para coincidir los nombres de usuario con los números de ID…

Una vez que tenga una lista de pares (quienes dan “me gusta” y quienes reciben) expresada como nombres de usuario, me permitirá seguir el método utilizado en el hilo del Gráfico de red para generar este tipo de gráficos, mostrando la actividad dentro de categorías específicas, ya que tenemos comunidades muy distintas en diferentes partes de nuestros foros:

Los gráficos en vivo son una forma valiosa de explorar nuestras diferentes subcomunidades, identificando rápidamente miembros influyentes y grupos de personas.

Por ejemplo, compare nuestra comunidad de músicos con la de diseñadores gráficos; hay una gran diferencia entre las dos :slight_smile:

12 Me gusta

Aquí tienes una versión modificada que hace eso:

WITH pairs AS (
    SELECT p.user_id liked_id, pa.user_id liker_id
    FROM post_actions pa
    LEFT JOIN posts p ON p.id = pa.post_id
    LEFT JOIN topics t ON t.id = p.topic_id
    LEFT JOIN categories c ON c.id = t.category_id
    WHERE post_action_type_id = 2
    AND c.id = 1
)
SELECT 
  liker.username as liker,
  liked.username as liked,
  count(*)
FROM pairs
LEFT JOIN users liker
ON liker_id = liker.id
LEFT JOIN users liked
ON liked_id = liked.id
GROUP BY liked, liker
ORDER BY count DESC
10 Me gusta

Gracias @mcwumbly, eso es perfecto :slight_smile:

Empezaré a preparar gráficos de red para todas las demás partes de nuestros foros, ahora que el proceso no requiere un truco para obtener los nombres de usuario.

1 me gusta