我很难理解下面的问题:
找到技能C ++编程所需技能直接需要的所有技能的名称。 > (例如,C ++编程需要C编程和C编程需要读写)。
表格SREQUIRED
如下:
我做的SQL查询是:
SELECT
s1.requires
FROM
srequired s1
INNER JOIN
srequired s2
ON
s1.sname = s2.requires
AND
s2.sname = 'C++ programming';
注意:解决方案必须使用self-join
实现。
我做得对吗?我正在使用SQL Plus
和Oracle DB
。感谢。
答案 0 :(得分:1)
CONNECT BY PRIOR
:
SELECT sname,
requires,
LEVEL
FROM srequired
START WITH sname = 'C++ programming' CONNECT BY
PRIOR sname = requires
ORDER SIBLINGS BY sname;
在此处阅读更多分层查询:Oracle doc
对于使用SELF JOIN的跨DBMS:Hierarchical queries in MySQL