【问题标题】:convert inner join query to subquery将内连接查询转换为子查询
【发布时间】:2021-08-08 01:47:39
【问题描述】:

我有 3 个表格,我试图在其中找到将它们组合起来的答案并尝试获取这些列

select student_name,course_title,last_name
from students
inner join student_enrollment
on students.student_no = student_enrollment.student_no
inner join courses
on courses.course_no = student_enrollment.course_no
inner join teach
on courses.course_no = teach.course_no
order by student_name

我想将我的内连接查询转换为子查询,我怎样才能达到相同的结果?我尝试了一些,但它没有运行

我尝试的解决方案

  select (select student_name from students where students.student_no = student_enrollment.student_no) as student_name,
    (select last_name from teach where teach.course_no  = student_enrollment.course_no) as professor_name,
    (select course_title from courses where courses.course_no =  teach.course_no ) as course_title
    from student_enrollment

【问题讨论】:

  • 你可能做不到。样本数据和期望的结果会有所帮助。
  • 但是为什么我提到了带有连接的查询应该能够就转换什么以及如何转换提供足够的见解?如果没有,我会看看我能提供什么
  • 首先,您为什么要这样做?第一个查询更容易阅读,我看不出任何明显的性能原因改变......其次你说它没有运行......它给你一个错误吗?如果是这样呢?或者只是错误的结果?如果是这样的话,正如 Gordon Linoff 指出的那样,我们需要你所期望的和你所得到的。
  • @ShaunPeterson 我同意,第二个查询给出错误,我可以粘贴它们,只是为了能够更深入地学习 sql,我想看看我是否可以在子查询中编写它或不是 。我不是在努力地做事情,我只是在努力地学习它们。
  • @ShaunPeterson 我写的查询是错误的。它不正确。我想要一个正确的实现。

标签: sql join plsql subquery inner-join


【解决方案1】:

不确定您遇到了什么错误,但我相信您的问题可能来自于您在第三个子查询中尝试链接到第二个子查询中的表。

每个子查询不知道另一个,只知道主查询中的表.....

所以你在哪里

courses.course_no =  teach.course_no

你可以替换成

courses.course_no = student_enrollment.course_no

那我觉得你应该工作....

查看我在下面创建的 dbfiddle 以获取类似的示例

https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=31aa8d0ab9e139d1eae2d50e703caff5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    相关资源
    最近更新 更多