Mostrar criar tabela:
CREATE TABLE `a` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
CONSTRAINT `a_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `a` (`id`) ON DELETE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Selecione:
+----+---------+-----------+
| id | name | parent_id |
+----+---------+-----------+
| 1 | World | 1 |
| 2 | Europe | 1 |
| 3 | USA | 1 |
| 4 | France | 2 |
| 5 | Germany | 2 |
+----+---------+-----------+
Pergunta:
como defino melhor uma função que, passada id 4 como argumento, retorna:
"Mundo > Europa > França"
Esse "aninhamento" hierárquico por "parent_id" pode ser arbitrariamente profundo, não apenas 3 níveis de profundidade.