2017-01-28 17 views
2

у меня есть этот случай, используя рекурсивный запрос на Mysql найти лв 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

я искал повсюду, и чтение этой http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/,but я не нашел результат я искал ..
любые помогает будет appriciated, благодаря

+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, но мне кажется, что я ошибся, написав запрос о том, где родительский IN (SELECT ID FROM TABLENAME WHERE PARENT = 1). @Ollaw –

0

Попробуйте это гораздо быстрее

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

Пожалуйста, объясните свой сегмент кода. Просто часть кода не будет очень полезной для пользователей. – Billa

+0

этот запрос полезен, если вы хотите получить все дочерние элементы родителя, а также их ребенка и т. Д. или просто мы можем сказать, что это полезно для получения рекурсивных данных –