1

私の質問は親子の問題に近いもので、再帰的なクエリが必要になるかもしれませんが、フォーラムを閲覧しても答えが見つかりませんでした。ここに私の問題があります:私は3つのテーブルを持っています:

T1(人) T2(場所) T3(AとBの関係)
---------- ------ --------
id1 (ピーク) id2 (ピーク) id3 (ピーク)
名前都市id_A
                            id_B

関連する場所と人々のグループを特定したいと思います。たとえば、
John がロンドンとパリを
訪れ、Mary がパリとニューヨークを
訪れ、Peter がバンガロールと東京を訪れ
た場合、同じグループ コードを Mary、John、Paris、London、New York に適用し、別のグループ コードを Peter に適用したいと考えています。 、東京とバンガロール。

SQLでこれを行う方法が本当にわかりません。何か案が?

ありがとう

4

1 に答える 1

1

この問題は「孤立したサブグラフを見つける」です。

SQL単一のクエリで効率的に解決することはできませんが、これは非常に単純な問題です。

シンプルなストアド プロシージャを作成するのは非常に簡単です。

  1. ステージング テーブルを作成します。

    group_id   city_id
    
  2. 各都市についてgroup_id、近隣のすべての を検索します (その都市の訪問者が訪れた他のすべての都市)

  3. ネイバーが異なる に属している場合はgroup_id、ステージング テーブルを更新し、すべてのgroup_idをセットの少なくとも 1 つに設定します。

  4. 新しい都市をgroup_idステージング テーブルに挿入します。

于 2010-05-07T09:38:44.473 に答える