首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有自连接表的SELECT子句

带有自连接表的SELECT子句
EN

Stack Overflow用户
提问于 2014-05-08 13:29:52
回答 3查看 159关注 0票数 1

两个表:

代码语言:javascript
复制
//SKILL
SNAME
---------------------
C++
C#
C
JAVA

//REQUIRED
SNAME          REQUIRED
------------------------
C++               C
C#             reading
C              writing
C              reading
JAVA              C

我使用了这个查询

代码语言:javascript
复制
SELECT DISTINCT sq.SNAME,sq1.requires AS "requires" FROM SREQUIRED sq
INNER JOIN SREQUIRED sq1
ON sq.SNAME='C++';

但是我的输出是

代码语言:javascript
复制
SNAME                REQUIRES
-------------------------------
 C++                     C
 C++                  reading
 C++                  writing

我的问题是,如果我想找到skills C++直接需要的技能,我应该使用什么查询?输出应如下所示:

代码语言:javascript
复制
SNAME                 REQUIRES
-------------------------------
 C++                     C
 C                    reading
 C                    writing

因为C++需要C语言,而C语言需要读写。它就像第一级,第二级,等等。

EN

回答 3

Stack Overflow用户

发布于 2014-05-08 13:48:04

不是最好的解决方案,但你可以这样尝试:

代码语言:javascript
复制
select * from srequired
where sname='C++'
UNION
select * from srequired
where sname in (select required from srequired where sname='C++')
票数 1
EN

Stack Overflow用户

发布于 2014-05-08 14:02:44

使用CTE使其成为泛型。级别可能比2更深。使用以下查询来获得所需的结果。

代码语言:javascript
复制
with cte
As
(
Select SName, [Required] from courses where SName = 'C++'
Union All
Select courses.SName, courses.[Required] from courses 
   inner join cte on courses.SName = cte.[Required]
)
select * from cte

希望能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2014-05-08 13:50:12

加入条件

代码语言:javascript
复制
ON sq.SNAME='C++'; 

不关联两个表(sq和sq1),并将结果集限制为sq.SNAME = 'C++',这就是为什么您在输出中仅获取SNAME = 'C++‘的原因。

联接需要如下所示。

代码语言:javascript
复制
ON sq.Requires = sq1.sName 

然后,您需要在Where子句中指定:

代码语言:javascript
复制
WHERE sq.sNAME = 'C++'

然后,您将在2行代码中使用带有'C++‘的sq.sName。sq1.sName在所有列中都包含'c‘。和sq1。需要‘阅读’和‘写作’

要在单个输出中获得结果集,您必须使用UNION或CTE。一个联盟会给你两个你需要的等级。CTE可以为您提供n个级别。也就是说,如果阅读有另一个必备条件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23533429

复制
相关文章

相似问题

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