Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como buscar categorias e subcategorias em uma única consulta no sql? (mysql)


Se você está perguntando sobre "Existe nas consultas recursivas do mysql?" responda "NÃO".

Mas há uma abordagem muito boa para lidar com isso.

Crie uma tabela auxiliar (dizendo CatHierarchy)
CatHierarchy:
    SuperId, ChildId, Distance
------------------------------ 
     1          1         0
     1          2         1
     2          2         0

Esses dados redundantes permitem facilmente em 1 consulta selecionar qualquer hierarquia e em 2 inserir suportar qualquer hierarquia (exclusão também realizada em 1 consulta com a ajuda de excluir integridade em cascata).

Então o que isso quer dizer. Você acompanha todo o caminho na hierarquia. Cada nó do Cat deve adicionar referência a si mesmo (distância 0) e, em seguida, suportar a duplicação adicionando dados redundantes sobre os nós vinculados.

Para selecionar a categoria com sub basta escrever:
 SELECT c.* from Category c inner join CatHierarchy ch ON ch.ChildId=c.cat_id
      WHERE ch.SuperId = :someSpecifiedRootOfCat

someSpecifiedRootOfCat - é o parâmetro para especificar a raiz da categoriaTHATS ALL!