Hilfe beim Ändern einer Abfrage, um Benutzernamen anstelle von Benutzer-IDs zurückzugeben

Hallo! Ich brauche etwas Hilfe dabei, eine Abfrage so anzupassen, dass sie Benutzernamen statt der Benutzer-ID-Nummern zurückgibt.

Bisher habe ich folgende Abfrage verwendet (modifiziert basierend auf @DavidGNavas’ großartigem Network Chart-Thread):

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

Danach habe ich eine sehr umständliche VLOOKUP-Funktion verwendet, um die Benutzernamen mit den ID-Nummern abzugleichen…

Sobald ich eine Liste von Paaren (Liker & Gelikte) in Form von Benutzernamen habe, kann ich die im Network Chart-Thread beschriebene Methode anwenden, um solche Diagramme zu erstellen. Diese zeigen die Aktivität innerhalb bestimmter Kategorien, da wir auf verschiedenen Teilen unseres Forums sehr ausgeprägte Sub-Communities haben:

Die Live-Diagramme sind eine wertvolle Möglichkeit, unsere verschiedenen Sub-Communities zu erkunden, einflussreiche Mitglieder und Gruppen von Personen schnell zu identifizieren.

Vergleichen Sie beispielsweise unsere Musiker-Community mit unseren Grafikdesignern – der Unterschied zwischen beiden ist enorm :slight_smile:

Hier ist eine modifizierte Version, die genau das tut:

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

Danke @mcwumbly – das ist perfekt :slight_smile:

Ich werde jetzt anfangen, Netzwerkkarten für alle anderen Bereiche unseres Forums zusammenzustellen, da der Prozess nun keinen Workaround mehr erfordert, um an Benutzernamen zu kommen.