mysql, найти родительский узел

У меня есть стандартный иерархический идентификатор таблицы / PID, и мне нужно найти (boolean), если какой-либо дочерний элемент принадлежит к некоторому ID. Есть ли способ сделать это в mysql?

ID PID ------------ 1 0 <- root ... ... ... ... ... ... 7 1 ... ... 16 1 ... ... 4 0 ... ... 22 16 25 16 

Есть ли способ узнать, принадлежит ли дочернему узлу 22 узлу 1? Я спрашиваю, потому что я хочу реализовать некоторую процедуру удаления, где узел 1 является моим Recycle. Все удаления, принадлежащие 1, будут удалены навсегда, и все остальные удаления будут заменены PID, поэтому временно принадлежит 1.

Большое спасибо заранее,

На основе Иерархических запросов в MySQL :

 SET @x := 22; SET @y := 0; select 'yes' as x_comes_from_y from dual where @y in ( SELECT @id := ( SELECT pid FROM h WHERE id = @id ) AS nodes FROM ( SELECT @id := @x ) vars STRAIGHT_JOIN h WHERE @id IS NOT NULL ); 

Попробуй это.

Еще раз спасибо за это полезное решение. Я немного упростил, так как мне не нужен STRAIGHT_JOIN

 SET @x := 52; SET @y := 41; select 'yes' as x_comes_from_y from dual where @y in ( SELECT @id := ( SELECT pid FROM cat WHERE id = @id ) FROM cat WHERE @id IS NOT NULL ); 

PS. Существует небольшой недостаток при использовании для получения полного пути объектов, результат всегда возвращает последнюю строку NULL, но этого можно избежать с помощью другого SELECT.