Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, pessoal
Tenho um sistema de categorias e sub-categorias, onde uso apenas a tabela abaixo:
CREATE TABLE categorias(
id INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
id_pai INT(5) UNSIGNED NOT NULL,
nome VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
imaginemos o seguinte conjunto de dados
INSERT INTO categorias(id, id_pai, nome) VALUES
(1, 0, 'A Empresa'),
(2, 1, 'Sobre Nós'),
(3, 1, 'Objetivos'),
(4, 3, 'Objetivo dos nossos clientes'),
(5, 0, 'Contato'),
(6, 0, 'Produtos');
id_pai = 0 significa que a categoria é raiz (não é sub-categoria)
Com esta query, retorno a lista de categorias:
mysql> SELECT id, id_pai, nome FROM categorias
+----+--------+----------------------+
| id | id_pai | nome |
+----+--------+----------------------+
| 1 | 0 | A Empresa |
| 2 | 1 | Sobre Nós |
| 3 | 1 | Objetivos |
| 4 | 3 | Objetivo dos nossos |
| 5 | 0 | Contato |
| 6 | 0 | Produtos |
+----+--------+----------------------+
6 rows in set (0,00 sec)
Preciso contar o número de categorias-filhas de cada categoría. Sei que posso usar mais de uma query, mas acho que deve haver alguma forma de fazer isso em uma única consulta.
Eu gostaria de um resultado assim:
mysql> ????????
+----+--------+----------------------+
| id | id_pai | nome | filhas
+----+--------+----------------------+
| 1 | 0 | A Empresa | 2
| 2 | 1 | Sobre Nós | 0
| 3 | 1 | Objetivos | 1
| 4 | 3 | Objetivo dos nossos | 0
| 5 | 0 | Contato | 0
| 6 | 0 | Produtos | 0
+----+--------+----------------------+
6 rows in set (0,00 sec)
Alguma sugestão? :)
Abraços
Carregando comentários...