2017-01-28 3 views
2

から私が使用している
データベース構造をすべての子を取得:
MySQLの再帰は...私は1つのテーブルの上にLV 2とLV3の子を見つけるために、MySQLの上で再帰クエリを使用してこのケースを持っている親

id name parent 
1 A 0 
2 B 0 
3 C 0 
4 D 1 
5 E 1 
6 F 2 
7 G 2 
8 H 3 
9 I 3 
10 J 4 
11 K 4 

結果私は、id = 1のデータをフィルタリングするときに、私が期待している結果を生成することを期待していました。

id name parent 
4 D  1 
5 E  1 
10 J  4 
11 K  4 

またはこれがイラストです。 Illustration

私は私が探していた結果を見つけるdidntはどこにでも見て、このhttp://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/,butを読んでいる...
いずれかが感謝

+0

あなたのテーブル名を挿入してリンクしたページは存在しません – Ollaw

答えて

0
SELECT * 
FROM TABLENAME 
WHERE PARENT = 1 
UNION 
SELECT * 
FROM TABLENAME 
WHERE PARENT IN 
    (SELECT ID FROM TABLENAME WHERE PARENT = 1) 
+0

速いです、ありがとう..私は同じqueyを使っていましたが、私は間違っていたようです。 PARABENT = 1)を設定してください。 @Ollaw –

0

がはるかに速く

、これを試してみてください、にappriciatedされるのに役立ちます
SELECT * FROM table AS T1 INNER JOIN (SELECT id FROM table WHERE parent = 1) AS T2 ON T2.id = T1.parent OR T1.parent = 1 GROUP BY T1.id 
6

特定の親のすべてのレベルの子供を取得したい場合は、これを試してください。

select id, 
     name, 
     parent 
from (select * from tablename 
     order by parent, id) tablename, 
     (select @pv := '1') initialisation 
where find_in_set(parent, @pv) > 0 
and  @pv := concat(@pv, ',', id) 
+0

あなたのコードセグメントを説明してください。ちょうど1つのコードは、ユーザにとってあまり役に立ちません。 – Billa

+0

このクエリは、親の子とその子などをすべて取得する場合に役立ちます。単純に再帰的なデータを取得するのに便利だと言うことができます –

関連する問題