2015-06-03 188 views
-3

我有一個問題,詢問: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; 

任何幫助嗎?

+3

您的查詢有什麼問題? – Jens

+0

奇怪的列名...如果可能,請使用相同的名稱,使用表別名等。 FROM DA_STUDENTS s FULL JOIN DA_ENROLMENTS e ON s.student_id = e.student_id – jarlh

+0

我試過了,但仍然沒有工作! :/ – Kyle

回答

0

開始:排序的事情沒有很好地解釋。它甚至看起來像縮進混淆。按照學生姓名和課程排序,但最終讓學生按課程分組,只需按課程排序,然後由學生排序。

然後:「生成的名字/姓氏......不會出現在輸出中」。什麼?他們是如何產生的?他們不是學生表中的簡單列嗎?至於在輸出中顯示或不顯示:陳述你想在你的SELECT子句中顯示的內容。其他欄目當然不會顯示。

至於「讓存儲在da_students,da_enrolments和da_courses所有數據的列表」:這意味着所有的學生,所有課程加上associtated enrolements:

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