Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

afficher les sous-catégories en utilisant SQL

Rejoindre automatiquement la table pour trouver le parent réel de l'enfant.

SELECT        c1.CategoryID, c2.ParentCategoryID, c1.Name, c2.Name as ParentName, c1.Published, c1.Deleted, c1.PictureID
FROM          Nop_Category c1
JOIN          Nop_Category c2 on c1.ParentCategoryId = c2.CategoryId
WHERE        (c1.Deleted = 0)  
AND          (c1.Published = 1)  
AND          (c1.ParentCategoryID = 10)

Cela renverrait les deux enfants de la catégorie "Ordinateurs". C'est ce que vous cherchez ?

Bien sûr, vous pouvez inverser cette option pour afficher tous les enfants d'un parent spécifique ou de tous les parents :

SELECT c.*, p.* -- shortened, but you should pick specific columns

FROM Nop_Category p -- parent
JOIN Nop_Category c ON c.ParentCategoryId = p.CategoryId -- children

WHERE p.ParentCategoryId = 0 -- all top level parents


SELECT c.*, p.* -- shortened, but you should pick specific columns

FROM Nop_Category p -- parent
JOIN Nop_Category c ON c.ParentCategoryId = p.CategoryId -- children

WHERE p.CategoryId = 10 -- only the "Computers" category

Ou, si vous voulez juste les enfants de la catégorie "Ordinateurs", changez votre ParentCategoryId à 10

SELECT        CategoryID, ParentCategoryID, Name, Published, Deleted, PictureID  
FROM          Nop_Category  
WHERE        (Deleted = 0)   
AND          (Published = 1)   
AND          (ParentCategoryID = 10)