0

複数のテーブルを介してクエリのデータをフェッチするための最適なパスを見つけるのに役立つアルゴリズムを作成しようとしています。テーブルには、それらを相互に関連付ける重複する変数があります。たとえば、次のようなクエリがあるとします。

'T3:F6 > 0 となるように T1:F1 を選択'

テーブルは次のように設定されています。

表 1 (T1): F1、F2

表 2 (T2): F2、F3、F4

表 3 (T3): F4、F5、F6

ここで、F1 から F6 のエントリに割り当てられた値があります。したがって、表 1 には F1 があり、F2 はその兄弟です。F2 も表 2 にあり、F4 もその兄弟です。F4 も表 3 にあり、F6 はその兄弟です。

テーブルをトラバースする正しい方法は次のとおりです: T1:F1 -> T1:F2 -> T2:F2 -> T2:F4 -> T3:F4 -> T3:F6

これを行うためのアルゴリズムはありますか?各テーブルの兄弟を単純に検索するのは難しすぎるようです。ある種のツリー検索アルゴリズムのようですが、ツリーの設定方法がわかりません。

4

1 に答える 1

0

リレーショナル データベースを扱う場合は、どのようにするか (アルゴリズム) ではなく、何をしたいかという観点で考えた方がよいでしょう。この場合、必要なものは次のとおりです。

select     T1.F1
from       T1 
inner join T2 on T1.F2 = T2.F2
inner join T3 on T2.F4 = T3.F4
where      T3.F6 > 0
于 2015-02-22T08:13:36.790 に答える