2013-11-26 39 views
0

我有以下視圖,其中顯示學生姓名,學生擁有的學分,並且我剛添加了一個名爲year的列,全部設置爲0。試圖將年份與大學生聯繫起來

+------------------+---------+------+ 
| StudentName  | Credits | Year | 
+------------------+---------+------+ 
| Jon Macleod  |  0 | 0 | 
| Carrie Gregory |  0 | 0 | 
| Matt Hayden  |  0 | 0 | 
| Emily Scarlett |  10 | 0 | 
| Hailey Taylor |  10 | 0 | 
| Tj Davidson  |  10 | 0 | 
| Alex Harry  |  20 | 0 | 
| Matt Tosh  |  20 | 0 | 
| Mitchell Gallant |  20 | 0 | 
| Jon Harris  |  30 | 0 | 
| Casey Macky  |  30 | 0 | 
| James Doolittle |  30 | 0 | 
+------------------+---------+------+ 

我想這樣做,當學生有0個學分,他們是第一年。當一個學生有10個學分,他們是第二年,等等..

我有以下腳本,但不知道爲什麼它不起作用。

CREATE OR REPLACE VIEW Year AS 
SELECT S.stu_name AS StudentName, SUM(Credits) AS Credits, 0 AS Year 
     FROM Student AS S JOIN Enrollment AS E 
     ON S.stu_id = E.stu_id 
     Case 
      when (Year = '0' and Credits = 0 then 'FirstYear' 
      when (Year = '0' and Credits = 10 then 'SecondYear' 
      else Year 
     end as Year 
     GROUP BY S.stu_id 
     ORDER BY Credits; 
+0

如果兩個學生有相同的名字會發生什麼? – Shomz

+0

從SELECT學生名稱開始,例如從... – Strawberry

+0

我也有學生ID與學生相關聯。對於這個例子,我剛剛顯示名稱 – Godin1

回答

1

試試這個:

當我錯過一個事實,即MySQL的犯規讓子查詢這裏是一個妥善的解決辦法:

CREATE OR REPLACE VIEW Year AS 
    SELECT S.stu_name AS StudentName, SUM(Credits) AS Credits, 
      Case When SUM(Credits)=0 then 'First Year' 
       When SUM(Credits)=10 then 'Second Year' 
       When SUM(Credits)=20 then 'Third Year' 
       When SUM(Credits)=30 then 'Fourth Year' 
       When SUM(Credits)=40 then 'Fifth Year' 
       else '' end as year 
    FROM Student AS S INNER JOIN Enrollment AS E 
     ON S.stu_id = E.stu_id 
    GROUP BY S.stu_id 
    order by E.credits; 

看到它在這裏小提琴:http://sqlfiddle.com/#!2/776c3/1

+0

謝謝。不過,我收到錯誤的觀點選擇包含FROM子句中的子查詢 – Godin1

+0

噢,我錯過了這個事實從MySQL。 –

+0

@ Godin1看我的編輯。 –

1

你可以嘗試這樣的事情:

SELECT S.stu_name AS StudentName, SUM(Credits) AS Credits, 
    Case Credits 
     when 0 then 'FirstYear' 
     when 10 then 'SecondYear' 
     else Year 
    end 'year' 
       FROM student AS S 
    GROUP BY S.stu_id 
    ORDER BY Credits;