En ese caso necesitas controlar el nivel
IdCat, Cat,idPadre,nivel
1,Lapiz,0,1
2,HijoLapiz,1,2
3,NietoLapiz,2,3
Con ese dato adicional se puede solucionar construyendo una query distinta en cada caso. Yo lo haria con programación externa, que no seria objeto de este foro....
A partir del nivel de la categoria buscada y del maximo nivel posible es facil montar un bucle que construya la query adecuada....
En este caso el nivel de lapiz es 1 y el maximo nivel es 3
Para HijoLapiz nivel 2
Yo siempre lo he solucionado asi, pero estaré atento a soluciones mas directas....