【问题标题】:find relationships in a many-to-many structure with sql用sql查找多对多结构中的关系
【发布时间】:2010-05-07 09:09:20
【问题描述】:

我的问题接近于亲子问题,可能需要一些递归查询,但我通过浏览论坛没有找到任何答案。 这是我的问题:我有 3 张桌子:

T1(人) T2(地点) T3(A 和 B 之间的关系) -------- ------ -------- id1 (pk) id2 (pk) id3 (pk) 名称城市id_A id_B

我想确定相关的地点和人员组。 例如,如果
约翰访问伦敦和巴黎,
玛丽访问巴黎和纽约,
彼得访问班加罗尔和东京,
我想将同一组代码应用到 Mary、John、Paris、London 和 New York,并将另一个组代码应用到 Peter、Tokyo 和 Bangalore。

我真的不知道如何用 sql 来做到这一点。有什么想法吗?

谢谢

【问题讨论】:

    标签: sql many-to-many recursive-query


    【解决方案1】:

    这个问题是“寻找孤立的子图”。

    这是一个相当简单的问题,虽然它无法通过单个 SQL 查询有效地解决。

    写一个简单的存储过程很容易:

    1. 创建临时表:

      group_id   city_id
      
    2. 对于每个城市,查找所有相邻城市的group_id(该城市的访客也访问过的所有其他城市)

    3. 如果邻居属于不同的group_id,则更新临时表,将所有group_id 设置为集合中的最小值。

    4. 将带有新group_id 的城市插入临时表。

    【讨论】:

    • 您好,感谢您的快速回答,虽然我编写程序并不容易。我完全理解你的方法,但我正在努力写这些东西。如果您对程序中使用的特定功能有更多建议,我将非常高兴。再次感谢
    最近更新 更多