mysql - (成员)的最佳(圆圈)取决于最佳共同点

标签 mysql database

亲爱的 stackoverflow 成员(member),

我有四个表:members、circles、circle_members 和 member_relations。

您可以检查此链接以清楚地了解数据库架构。

http://sqlfiddle.com/#!2/1a47a6/1

现在,

John 是 id 为 1 的成员,与两个成员 [2, 4] 相关。

然而,约翰不属于任何圈子。我想将约翰添加到(最佳)圈子中。

我的意思是,在circle_members 和member_relations 之间具有最常见成员ID 的圈子。

在这种情况下,John将被添加到圈子#1中,因为这个圈子中有两个与他有关系的公共(public)ID;特别是[2, 4]。但不会被添加到第2圈,因为只有一个公共(public)id,即[4]。如果您注意到的话,#3 圈是不合适的,因为这个圈没有通用 ID。

我想使用 SQL 来实现此功能,首选 MySQL。

最诚挚的问候, 胡萨姆。

最佳答案

类似这样的事情:

select circle_id, count(*)
from member_circles mc
inner join
(
    -- Get related members
    select relatedMemberId
    from member_relations
    where member_id = 1 -- That's John
) x on x.relatedMemberId = c.member_id
group by circle_id
order by count(*) desc

(我假设 member_relations 具有 member_id 和 relatedMemberId 列。根据需要进行更改。)

这会生成一个列表,首先包含最合适的圆圈。

干杯-

关于mysql - (成员)的最佳(圆圈)取决于最佳共同点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20970684/

相关文章:

sql - 在数据库中存储神经网络的最佳实践

database - 杀死 autovacuum 的危险 : VACUUM queries (to prevent wraparound)

android - 当我在回收器 View 中显示数据时出错 :RecyclerView: No adapter attached; skipping layout

mysql - 在 emacs 中设置 `sql-mysql-program`

java - 有人关心用数据库解释 "Tokenized Field"吗?

php - 为什么我的成员(member) ID 列返回空值?

php - 使用 mysql 的最新 Xampp,来自 Xampp 版本 1.4.4

database - Codeigniter 未定义属性:xxxx_model::$db 仅来自模型

mysql - SQL 子查询练习 : Display the salesmen which name are alphabetically lower than the name of the customers

c# - 更新一个集合到数据库