我有一个问题:
列出存储在da_students,da_enrolments和da_courses中的所有数据。编写一个查询,使所有列在输出中只出现一次,行由学生排序'名字升序和course_id降序,以便学生按课程分组(不使用group by子句),并且生成的名/姓(fname ..,Lname ...)不会出现在输出中。
我目前的代码是:
SELECT *
FROM DA_STUDENTS
FULL JOIN DA_ENROLMENTS ON student_id = student_student_id
FULL JOIN DA_COURSES ON course_course_id = course_id
ORDER BY first_name ASC, course_id DESC;
请帮忙吗?
答案 0 :(得分:0)
首先:排序的事情没有得到很好的解释。它甚至看起来像是缩进混淆。按学生姓名和课程排序,但最后按课程分组,只是按课程顺序,然后是学生。
然后:"生成名字/姓氏......不会出现在输出"中。什么?它们是如何产生的? Aren他们是学生桌中的简单栏目吗?至于在输出中显示某些内容:说明要在SELECT子句中显示的内容。当然不会显示其他列。
关于"列出存储在da_students,da_enrolments和da_courses中的所有数据":这意味着所有学生,所有课程以及相关的环境:
from da_students s
cross join da_courses c
left join da_enrolments e on e.student_id = s.student_id and e.course_id = c.course_id
至于"编写一个查询,使所有列只在输出中出现一次":这意味着,不要
select *
,也不
select s.student_id, e.student_id, ...
但仅
select s.student_id, ...
只显示学生ID一次。