2011-02-03 2 views
0

を選択します排除されていない親ノード "の照会を含む。は、私は、SQLテーブルに次したと除外パスに基づいて、除外されていないパスの親ノード

様々なシナリオのための所望の出力は次のとおりです。

Scenario Excluded Path(s) Desired Output Remarks 
1   /a    /b    because /a/a, /a/b, /a/b/c are children of /a 

2   /b    /a 

3   /a/b    /a    because /a/a is not excluded 
          /b 

4   /a/a    /b    because /a/b/c is the only child of /a/b 
      /a/b/c       and /a/a and /a/b are children of /a 

答えて

0

私は右のあなたを理解していれば、あなたのprobleは「ノード」と「パス」とはほとんど関係を持っています。指定した接頭辞で始まらない文字列(パス)を探しているだけです。 そうなら、問題は簡単です、hereを見てください。

+0

いいえ、私はありません。 :) – user593996

1

だから、より完全にそれを述べるために:

For a given path P, find top-level nodes 
having any children not on path P 

しかし、第三及び第四の望ましい結果は、このルールに従うことは表示されませんので、それは遅すぎる、私はこれに答えるべきではありませんか、ルールは明確に定義されていません。

とにかく、これをSQLで行うのは文字列を使うのが難しいですが、それらはすべて1文字で、スラッシュで区切られていると仮定します。

select left(path,1) as topNode 
    from theTable 
where path not like '/x/y%' 
group by left(path,1) 

私はそうではないと想定している1文字ではない場合、それらがテーブルにどのように格納されているかを調べる必要があります。

+0

いいえ、私がリストした結果が正しいです。 :) – user593996

関連する問題