帮助修改查询以返回用户名,而不是用户ID号码

你好!我希望能得到一些帮助,修改查询以返回用户名,而不是用户 ID 号码。

这是我目前使用的查询(修改自 @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

然后我使用了一个非常笨拙的 VLOOKUP 来将用户名与 ID 号码匹配……

一旦我获得了一对以用户名表示的配对(喜欢者和被喜欢者),我就可以遵循网络图表帖子中使用的方法来生成此类图表——展示特定类别内的活动,因为我们的论坛不同部分有着非常独特的子社区:

实时图表是探索不同子社区、快速识别有影响力的成员和人群集群的宝贵方式。

例如,比较我们的 音乐家社区 与我们的 平面设计师——两者之间存在巨大差异 :slight_smile:

这是一个经过修改的版本,可以实现该功能:

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

感谢 @mcwumbly - 这太完美了 :slight_smile:

我现在开始为我们论坛的其他部分整理网络图表,因为现在获取用户名不再需要变通方法了。