2009-11-10 114 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 

遞歸函數在遞歸函數,做一個表,並通過使用這些,如果CAT_ID = 1和parent_cat_id = 1取該產品的名稱,如果該產品類別ID和父類的id是同樣然後採取記錄也..使SQL Server 2005中

ANS IS LIKE ::: 

1 prod_1  2 
2 prod_2  5 
5 prod_5  7 
+0

應該在您的示例中的最後一行是「5 prod_5 7」? – codeulike 2009-11-10 18:05:13

+0

yes ..最後一行是..你寫的是 – sikender 2009-11-10 18:14:31

+0

在REAL中使用RECURSIVE FUNCTION .... – sikender 2009-11-10 19:02:58

回答

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