MySQL – ¿Es posible get todos los subelementos en una jerarquía?

He visto esto:

Seleccione productos donde la categoría pertenece a cualquier categoría en la jerarquía

Y está hablando de CTE, que no existe en MySQL. Tengo estructura como:

category_id | parent_category_id | name 

Quiero recuperar todas las identidades de subcategorías de un category_id determinado. ¿Es esto posible sin agarrar un nivel, y luego recorrerlo?

¿Esto es simplemente simpy una tabla de Modelo de Adyacencia ? Entonces no es posible en una consulta sin conocer la profundidad máxima.

Para pensar es Administrar datos jerárquicos en MySQL (aunque no defiendo el uso del Modelo de set nested para los datos que se modifican regularmente).

Con muchas combinaciones (izquierda), más específicamente: con tantas combinaciones a la izquierda como la profundidad máxima del tree, será posible en una consulta. Esta es la razón por la cual mucha gente tiende a save la "profundidad" de una categoría específica, por lo que podrá filtrar y limitar la cantidad de uniones a la misma tabla a una cantidad más sensata.

Personalmente, para alterar datos regularmente: tiendo a configurar un desencadenador en una inserción / actualización, que saveá / almacenará en caching la 'ruta' actual de un nodo basado en los identificadores (por ejemplo: una ruta es '12 / 62/28/345 ', en el que cada paso entre el delimitador / es la key primaria de un nodo padre en el order correcto (el padre de 345 es 28, el padre de 28 es 62, etc.)), por lo que puedo consultarlo con solo una combinación como esta ( / usado como separador):

 SELECT j.* FROM tablename o JOIN tablename j WHERE j.path LIKE CONCAT (o.path,'/%') AND j.id != o.id -- skip parent asked for. WHERE o.id = <the id of the node you're looking for>;