首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归选择类别

递归选择类别
EN

Stack Overflow用户
提问于 2012-09-28 15:20:36
回答 2查看 1.1K关注 0票数 4

在我的数据库中,我有下表:

代码语言:javascript
复制
Category: {[Name: VarChar, TopCategory: VarChar]}

该表包含以下内容:

现在,我需要在递归语句中使用with-clause从类别Computer Science的所有子类别中获取所有名称。这必须使用SQL完成,没有PHP或其他编程语言。

所有子类别不仅指直接后代,还指本例中的C++Java,我该怎么做呢?

到目前为止我所做的是:

代码语言:javascript
复制
SELECT name FROM category WHERE (topcategory = 'Computer Science')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-28 15:31:04

我们开始吧:

代码语言:javascript
复制
WITH RECURSIVE cte_t1 (name, topcategory, Level)
AS
(
SELECT name, topcategory, 0 AS Level
FROM Category
WHERE topcategory = N'ComputerScience'
UNION ALL
SELECT t1.name, t1.topcategory, Level + 1
FROM Category t1, cte_t1 ctet1
WHERE ctet1.name= t1.topcategory
)
SELECT Level, topcategory, name
FROM cte_t1
票数 4
EN

Stack Overflow用户

发布于 2012-09-28 15:37:48

如果您的数据库是oracle,您可以尝试一下(sql fiddle):

代码语言:javascript
复制
select * from category 
  start with name = 'Computer Science'
connect by prior name = top_category
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12635405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档