Aide pour modifier une requête afin de retourner des noms d'utilisateur au lieu des identifiants numériques

Bonjour ! Je cherche un peu d’aide pour modifier une requête afin qu’elle renvoie des noms d’utilisateurs au lieu des numéros d’ID des utilisateurs.

Voici ce que j’ai utilisé jusqu’à présent (modifié à partir du sujet excellent de @DavidGNavas, Network Chart) :

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

J’ai ensuite utilisé une recherche V (vlookup) très lourde pour faire correspondre les noms d’utilisateurs aux numéros d’ID…

Une fois que j’ai une liste de paires (likers et likés) exprimée sous forme de noms d’utilisateurs, cela me permet de suivre la méthode utilisée dans le sujet Network Chart pour générer ce type de graphiques, montrant l’activité au sein de catégories spécifiques, car nous avons des sous-communautés très distinctes dans différentes parties de nos forums :

Les graphiques en direct sont un moyen précieux d’explorer nos différentes sous-communautés, d’identifier rapidement les membres influents et les groupes de personnes.

Par exemple, comparez notre communauté de musiciens avec nos graphistes — il y a une grande différence entre les deux :slight_smile:

12 « J'aime »

Voici une version modifiée qui fait cela :

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 « J'aime »

Merci @mcwumbly - c’est parfait :slight_smile:

Je vais commencer à préparer des diagrammes de réseau pour toutes les autres parties de nos forums, maintenant que le processus ne nécessite plus de contournement pour obtenir les noms d’utilisateurs.

1 « J'aime »