2016-04-06 10 views
1

として親IDを持つすべての子を選択します。パラメータとして親IDと私はこのようなデータている条件

id  parent_id  name 
----------------------------- 
1  0   John 
10  1   Anna 
11  1   Doe 
2  0   Brian 
101  10   Chris 

今、私はすべてのレコード(と自分自身)を選択します。たとえば、parameter = 0の場合、すべてのレコードが返されます。これは、IDとWHERE PARENT_ID = 1

id  parent_id  name 
----------------------------- 
1  0   John 
10  1   Anna 
11  1   Doe 
101  10   Chris 

レコードの結果が望まれる

= 101は、ID 10は、私はこれを解決する見当もつかないID = 1
の子である結果セット内の親= 10のでを含みます。

私が試してみてください。

SELECT * FROM TABLE 
WHERE PARENT_ID = 1 
OR ID = 1 

これは、= 10 PARENT_IDを持つレコードを返さないで助けてください。

+0

https://stackoverflow.com/questions/タグ付き/ oracle +再帰問合せ –

+0

https://docs.oracle.com/cd/B19306_01/se rver.102/b14200/queries003.htm – JamieD77

+0

@a_horse_with_no_nameこの質問に対して、特定のリンクや回答を教えていただけますか?私は本当に何をすべきかわからない。 –

答えて

1

おそらく構築したいHierarchical Query

SELECT * FROM TABLE 
WHERE 1=1 
START WITH ID = 1 
CONNECT BY PRIOR ID = PARENT_ID 

編集: 結果:あなたはこのコードを試すことができます

ID PARENT_ID NAME 
    1   0 John 
10   1 Anna 
101   10 Chris 
11   1 Doe 
+0

これは私に望ましい結果を与えませんでした。常にすべてのレコードを取得します。 –

+0

今すぐお試しください。 –

+0

まだすべてのレコードを取得します。情報については、列IDとparent_idはvarchar2です。 –

0

SELECT * FROM TABLE WHERE START WITH ID = 1 CONNECT BY PARENT_ID = PRIOR ID 
関連する問題