我的问题是亲子问题附近,可能需要一些递归查询,但我没有通过浏览论坛找到任何答案。 这是我的问题:我有3张桌子:
T1 (people) T2 (places) T3 (relationship betwenn A and B) ------- ------ -------- id1 (pk) id2 (pk) id3 (pk) name city id_A id_B
我想确定相关的地方和人群。
例如,如果是
约翰访问伦敦和巴黎,
玛丽访问巴黎和纽约,
彼得访问班加罗尔和东京,
我想影响Mary,John,Paris,London和New York的相同组代码,以及Peter,Tokyo和Bangalore的另一组代码。
我真的不知道怎么用sql做这个。有什么想法吗?
由于
答案 0 :(得分:1)
这个问题是“找到孤立的子图”。
这是一个非常简单的问题,但使用单个SQL
查询无法有效解决。
编写一个简单的存储过程非常容易:
创建临时表:
group_id city_id
对于每个城市,找到所有邻居的group_id
(该城市访客也访问过的所有其他城市)
如果邻居属于不同的group_id
,则更新登台表,将所有group_id
设置为该集合中的至少一个。
将包含新group_id
的城市插入临时表。