J'utilise un ensemble imbriqué dans une table MySQL pour décrire une hiérarchie de catégories, et un tableau supplémentaire décrivant les produits.Hiérarchie des ensembles imbriqués MySQL avec table étrangère
Tableau de catégorie;
id
name
left
right
Tableau des produits;
id
categoryId
name
Comment puis-je récupérer le chemin d'accès complet, contenant toutes les catégories parentes, d'un produit? I.e. .:
RootCategory > SubCategory 1 > SubCategory 2 > ... > SubCategory n > Product
Dites par exemple que je veux à la liste tous les produits de SubCategory1
et il est sous-catégories, et chaque donnée Product
Je veux que le chemin d'arbre complet pour ce produit - est-ce possible?
Ceci est aussi loin que j'ai - mais la structure n'est pas tout à fait raison ...
select
parent.`name` as name,
parent.`id` as id,
group_concat(parent.`name` separator '/') as path
from
categories as node,
categories as parent,
(select
inode.`id` as id,
inode.`name` as name
from
categories as inode,
categories as iparent
where
inode.`lft` between iparent.`lft` and iparent.`rgt`
and
iparent.`id`=4 /* The category from which to list products */
order by
inode.`lft`) as sub
where
node.`lft` between parent.`lft` and parent.`rgt`
and
node.`id`=sub.`id`
group by
sub.`id`
order by
node.`lft`
Dans la question, vous ne mentionnez pas que les ID de nœud sont affectés dans un ordre qui vous permet de le faire. Sans cette connaissance, je ne pense pas que cela puisse être fait. – reinierpost