2010-11-29 4 views
0

Je prends tous les articles (par exemple des publicités) d'un arbre à l'aide de CTE (here), mais je me demande deux choses - la partie la plus difficile:T-SQL Quelques questions au sujet d'une requête récursive (CTE)

1 Est-il possible d'obtenir tous les noms de catégories des publicités trouvées? (dans la requête CTE récursive, regardez l'hyperlien ci-dessus)

2) Et (facultatif) comment obtenir le total trouvé nombre de publicités de chaque catégorie? Je veux dire, disons que j'ai trouvé 6 articles de 3 catégories et je voudrais voir le résultat de cette façon

category1 (6) -\ 
|    category3 (4) 
category2 (2) 

Toutes les idées seront si utiles

+0

La réponse comprend un lien vers un article expliquant les choses - avez-vous considéré * lire * ce lien? –

Répondre

1

pour la première question que vous devez aller de bas vers le haut, il pourrait être résolu à changer l'interrogation de l'ordre ex:

with CTE (id, pid, name) 
as 
(
select id, parentid as pid,name 
from category 
where id = @lowLevelCategory 
union all 
select CTE.pid as id , category.parentid as pid, category.name 
from CTE 
inner join category 
on category.id = CTE.pid 
) 
select * from ss 

pour le second: vous pouvez calculer le nombre seulement des points de sous, mais pas Somm et vous avez besoin d'une fonction pour ce calcul, car le regroupement ou la sous-sélection ne peut pas être dans la partie récursive