2009-11-10 5 views
2
cat_id prod_name parent_cat_id 
------ ---------- ------------ 
1 prod_1  2 
2 prod_2  5 
3 prod_3  1 
4 prod_4  3 
5 prod_5  7 
6 prod_6  5 

Dans une fonction récursive, faire une table et en utilisant ceux-ci, si cat_id = 1 et parent_cat_id = 1 prendre ce nom du produit et si cet identifiant de catégorie de produits et catégorie parente id est même puis prendre ce record aussi ..Faire une fonction récursive dans SQL Server 2005

ANS IS LIKE ::: 

1 prod_1  2 
2 prod_2  5 
5 prod_5  7 
+0

devrait la dernière ligne dans votre exemple être "5 prod_5 7"? – codeulike

+0

oui .. dernière ligne est .. est que vous avez écrit – sikender

+0

en utilisant la fonction RECURSIVE en réalité .... – sikender

Répondre

2
WITH rows AS 
     (
     SELECT cat_id, prod_name, parent_cat_id 
     FROM mytable 
     WHERE cat_id = 1 
     UNION ALL 
     SELECT m.cat_id, m.prod_name, m.parent_cat_id 
     FROM mytable m 
     JOIN rows r 
     ON  r.parent_cat_id = m.cat_id 
     ) 
SELECT * 
FROM rows