2010-05-07 53 views
1

我的问题是靠近父子问题,并且可能需要一些递归查询,但我没有通过浏览论坛找到任何答案。 这里是我的问题:我有3个表:找到多对多结构中的关系用sql

 
T1 (people)  T2 (places) T3 (relationship betwenn A and B) 
-------   ------  -------- 
id1 (pk)  id2 (pk) id3 (pk) 
name   city  id_A 
          id_B 

我想以标识相关的地方和人群。 例如,如果
约翰访问伦敦和巴黎,
玛丽访问巴黎和纽约,
彼得访问班加罗尔和东京,
我想影响同一组代码玛丽,约翰,巴黎,伦敦和纽约和另一组码到彼得,东京和班加罗尔。

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

谢谢

+0

您正在使用哪种RDBMS? – Quassnoi 2010-05-07 10:16:52

回答

1

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

这是一个相当简单的问题,虽然它不能有效解决一个SQL查询。

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

  1. 创建临时表:

    group_id city_id 
    
  2. 对于每一个城市,发现group_id“所有邻国的S(所有其他城市城市的游客还参观了)

  3. 如果邻居属于不同group_id的,更新升级表,将所有group_id设置为该集合中的至少一个。

  4. 将带有新的group_id的城市插入登台表中。

+0

你好, 感谢您的快速回答,尽管对我来说编写程序并不那么容易。 我完全理解你的方法,但我很努力地写东西。 如果您对程序中使用的特定功能有更多建议,我将非常高兴。 再次感谢 – thoomasbro 2010-05-07 10:09:30