2016-06-21 3 views
-1

私は次の表を持っています。sqlで再帰せずに親子のn番目のレコードを選択するには?

id |  name  | parent_id 
----+--------------+----------- 
    1 | Cat   |   
    2 | Fun   |   1 
    3 | LOLCs  |   2 
    4 | Anid   |   2 
    5 | Cla   |   1 
    6 | Rena   |   5 

................................. 
Up to 'N' th Level 

私はSQLでの再帰せずに親子供にnthレコードを選択したいと思います。

誰かがこれを行う方法についていくつかのガイダンスを提供できますか?

+1

なぜ再帰はありませんか?それから 'forループ'を使うことを考えますか? –

+0

あなたのDBMSが再帰的なクエリやループをサポートしておらず、レベル数が少ない場合は、古典的な解決策があり、各レベルに対して別の 'left join on nextlevel.id = prevlevel.parent_id'を追加します。 – dnoeth

+0

このような方法が可能な場合................ SELECT L0。* FROMテストL0 JOINテストL1 ON L0.Parent_Id = L1.Id JOINテストL2 ON L1 .ID = L2.Parent_Id WHERE L1.id = '1' UNION全て SELECT L1 * 試験に参加試験L0 FROM L1 ON L0.Id = L1.Parent_Id JOIN試験L2 ON L1.MnuId = L2 .ParentId JOINテストL3 ON L2.Parent_Id = L3.Id WHERE L1.Parent_Id = 1 ' – user6479492

答えて

0

こんにちは、テーブルのすべての列を連結する以下のクエリを試すことができます。 XMLパスのためのTABLE_NAME = 'your_table_name'

select COLUMN_NAME +'+ ''|'' ' from INFORMATION_SCHEMA.COLUMNS 

( '')

+0

これは間違いなく質問とは関係ありません – dnoeth

0

あなたがたい場合は 'N' 番目のlavelをあなたは再帰クエリを使用する必要があり、他のオプションは使用できません。参照のためにRecursive

関連する問題