【问题标题】:Oracle 11g - Recursive Table - How to show information from a simple recursive tableOracle 11g - 递归表 - 如何显示来自简单递归表的信息
【发布时间】:2015-03-25 03:12:59
【问题描述】:

这里是初学者...

如果我有一个有递归的表并且需要帮助显示以下内容。

大学生表,其中一些是教师和学生。所以,有些学生可以教其他学生,因为他们是老师。

|SID|  FName  |  LName  |  Phone  |  Teacher  |

----------------------------------------------------------

|1 |  John   |  Smtih  |  123    |  Null     |

|2 |  Susan  |  Johnson|  321    |  1        |

|3 |  Jane   |  Doe    |  456    |  1        | 

|4 |  Mike   |  Jones  |  654    |  Null     |

|5 |  Doug   |  Houston|  789    |  4        | 

teacher 字段与Student_ID 字段相关(因此该表具有递归性质)。

我需要拿出SQL命令显示下表(FName、LName和老师的名字):

|  FName  |  LName  |  Teacher    |

-----------------------------------

|  John   |  Smtih  |  Null       | 

|  Susan  |  Johnson|  John Smith | 

|  Jane   |  Doe    |  John Smith | 

|  Mike   |  Jones  |  Null       | 

|  Doug   |  Houston|  Mike Jones | 

如果我运行以下命令:

SELECT FName,LName,Teacher
FROM TableA;

我得到了我需要的大部分东西,但老师由Student_ID 代表。如何让学生的姓名出现在 Student_ID 出现的位置?

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

    您可以自联接到同一个表,将其作为外联接来允许空教师值,并连接教师的名字/姓氏。像这样的:

    SELECT a.FName, a.LName, b.FName || ' ' || b.LName
      FROM TableA a
      LEFT JOIN TableA b ON (a.Teacher = b.SID)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-04
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      相关资源
      最近更新 更多