C'est une table de catégorie,Comment puis-je obtenir toutes les sous-catégories liées à une catégorie sans savoir à quelle profondeur il va.
CREATE TABLE `categories` (
`id` int(11) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`parentid` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Voici comment vous obtenez Catégorie et sous-catégorie connexe.
SELECT root.name AS root_name
, down1.name AS down1_name
, down2.name AS down2_name
FROM categories AS root
LEFT OUTER
JOIN categories AS down1
ON down1.parentid = root.id
LEFT OUTER
JOIN categories AS down2
ON down2.parentid = down1.id
WHERE root.parentid IS NULL
ORDER
BY root_name
, down1_name
, down2_name
Ce que je constate est que cette requête va seulement 2 pas/nœuds avant, comme dire
category > sub-category 1 > sub-category 2
Et si j'ai une sous-catégorie qui va au-delà de 2 étape/nœuds comme dire
category > sub-category 1 > sub-category 2 > sub-category 3
ou même peut être sous-catégorie 4 dois-je ajouter down3.nam e ou down4.name pour arriver à la fin pour inclure toutes les sous-catégories ou existe-t-il un meilleur moyen?
Vous ne pouvez pas vraiment en MySQL. Vous avez deux choix: modifier la représentation de la hiérarchie ou utiliser une procédure stockée récursive. –
Copie possible de [Comment créer une requête récursive hiérarchique MySQL] (https://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query) – krokodilko