Data la seguente query ricorsiva:ricorsivo Query - Solo selezionare nodi in cui i nodi foglia rappresentano i dati attivi
WITH DepartmentHierarchy (DepartmentID, Name, IsInactive, IsSpecial, ParentId, HierarchyLevel) AS
(
-- Base case
SELECT
DepartmentId,
Name,
IsInactive,
IsSpecial,
ParentId,
1 as HierarchyLevel
FROM StoreDepartment
WHERE ParentId IS NULL
UNION ALL
-- Recursive step
SELECT
d.DepartmentId,
d.Name,
d.IsInactive,
d.IsSpecial,
d.ParentId,
dh.HierarchyLevel + 1 AS HierarchyLevel
FROM StoreDepartment d
INNER JOIN DepartmentHierarchy dh ON
d.ParentId = dh.DepartmentId
) SELECT * FROM DepartmentHierarchy
sono in grado di selezionare i dati che assomiglia a questo:
DepartmentId, Name, IsInactive, IsSpecial, ParentId, HeirarchyLevel
1, Store, 0, 0, NULL, 1
2, Main Department 1, 0, 1, 2
3, Main Department 2, 0, 1, 2
4, Sub For Main 1, 0, 2, 3
Inoltre, assumere una tabella esiste con DepartmentId e ItemId (es: DepartmentItemRelationship). I nodi foglia della gerarchia dipartimentale sono accoppiati con gli elementi qui.
voglio che il mio query ricorsive ai nodi di ritorno solo (a qualsiasi livello) che hanno almeno un nodo foglia sotto di loro con una corrispondenza nella tabella rapporto reparto/item. Questi nodi potrebbero essere 6 o 7 livelli verso il basso, quindi non sono sicuro di come avrei modificare la mia domanda per essere sicuri di includere quelli.
Grazie, Kyle
Kyle, se si dispone di un nodo foglia che soddisfa il requisito in un livello 6, si desidera mostrare i 5 reparti sopra quel nodo? –