2010-05-07 46 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