Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Unterkategorien mit SQL anzeigen

Melden Sie sich selbst wieder an der Tabelle an, um den tatsächlichen Elternteil des Kindes zu finden.

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)

Dies würde beide Kinder der Kategorie "Computer" zurückgeben. Ist es das, wonach Sie suchen?

Natürlich können Sie dies umkehren, um alle Kinder eines bestimmten Elternteils oder von allen Eltern anzuzeigen:

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

Oder, wenn Sie nur die untergeordneten Elemente der Kategorie „Computer“ haben möchten, ändern Sie Ihre ParentCategoryId in 10

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