需要SQL帮助

时间:2015-06-03 09:25:24

标签: sql

我有一个问题:

  

列出存储在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;

请帮忙吗?

1 个答案:

答案 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一次。