【发布时间】:2023-07-14 03:24:01
【问题描述】:
谁能帮我查询一下oracle中的一对多关系
表结构为:
Table: STUD_NAME Table:CLASS
STUD_No STUD_Name Class_ID STUD_No CLASS_NAME
------------------- -------------------------------------------
1 Sam 1 1 PHYSICS
2 Michael 2 1 MATHEMATICS
3 Patrick 3 2 PHYSICS
5 Leena 4 2 CHEMISTRY
我尝试使用连接概念,因此它在 STUD_NAME 表中返回重复的行,例如
1 Sam PHYSICS
1 Sam CHEMISTRY
我需要一个类似的输出
1 Sam PHYSICS,MATHEMATICS
2 Michael PHYSICS,CHEMISTRY
【问题讨论】:
-
您可以为您的表格(和列)使用别名。所以它会像
SELECT A.STUD_NO, A.STUD_NAME, B.CLASS_ID, B.CLASS_NAME FROM STUD_NAME A INNER JOIN CLASS_NAME B ON A.STUD_NO = B.STUD_NO -
嗨 Luiggi,我试过这样,但也许它作为名称 SAM 的两行返回,我需要在他正在学习的课程中作为名称 SAM 的单行返回,谢谢
-
哦,好的,但是您不能通过查询轻松地做到这一点。对于这种输出,您将需要 2 个游标:第一个将获取所有学生的姓名(我假设上面带有过滤器),然后迭代此游标以打开第二个游标,该游标将接收实际学生的 STUD_NO 并将获取他/她拥有的所有类,然后迭代此光标并将所有类的名称连接到
VARCHAR2(some_size)中,这将完成您的第一个光标的值。 -
好的,非常感谢您的想法,让我也尝试一下
标签: sql oracle oracle9i string-aggregation