首页 > 解决方案 > 组递归 1:M 关系

问题描述

我有一个带有递归 1:M 的表

每个客户可能都被以前的客户推荐过,现在我想对推荐过的客户进行分组,这样我就可以显示哪些客户推荐的次数最多。

在此处输入图像描述

我想要一个给出以下输出的查询

在此处输入图像描述

我试过了

SELECT count(*) AS Count_of_referrals, referral_id
FROM Customer
GROUP BY referral_id

它给出了每个referrer_id 被提及的次数,但我找不到将其链接回推荐他们的实际客户的方法。

感谢我能在这里得到的任何帮助.. :-)

标签: mysql

解决方案


嗯,你很接近了。您只需要自行加入customer表格即可获得其中name的内容referral_id

SELECT c1.referral_id,
       c2.name,
       count(*) count_of_referrals
       FROM customer c1
            INNER JOIN customer c2
                       ON c2.customer_id = c1.referral_id
       GROUP BY c1.referral_id,
                c2.name;

推荐阅读