2012-01-10 107 views
0

我有兩個表的學生和其他的標記 學生包含類似的名字,姓氏和獨特的IDNumber所有學生信息 和標記包含標記爲每個學生痕學生 獲得存儲每年即從三年級學生爲將在標記表3項嵌套的SELECT語句子查詢返回多行

現在我想設計一個包含學生信息,並在單個記錄所有3年標記

輸出應該是這樣的查詢:

First Name | Last Name | 1st Year Marks | 2nd Year Marks | 3rd Year Marks

+1

如果您發佈SQL語句,它也會更容易幫助。 – Aaron 2012-01-10 15:52:26

+1

或者至少是表格全定義 – jclozano 2012-01-10 15:56:45

回答

0

我不知道你的嵌套的語句是什麼樣子,但你要沿着這個線的東西:

select 
    s.firstname, 
    s.lastname, 
    sum(case when m.year = m2.minyear then m.mark else 0 end) as `1st Year Marks`, 
    sum(case when m.year = m2.minyear+1 then m.mark else 0 end) as `2nd Year Marks`, 
    sum(case when m.year = m2.minyear+2 then m.mark else 0 end) as `3rd Year Marks` 
from 
    students s 
    inner join marks m on 
     s.student_id = m.student_id 
    inner join (select student_id, min(year) as minyear from marks group by student_id) m2 on 
     s.student_id = m2.student_id 
group by 
    s.firstname, 
    s.lastname 

我在這裏做有條件的款項,以及動態年代以來,學生可以到達不同的時間。如果你有一個像「新生」,「大二」等的年表,那麼這會更容易,然後跟蹤學生什麼時候完成了這一年,但這將工作,我想。

0

試試下面的查詢..我考慮學生和標記有sstudent ID列

選擇stu.firstname + '|' + stu.lastname +'|' + marks.1styr +'|' + marks.2nd yr +'|'+ marks.3rdyr from students as stu,marks where stu.uniqueid = marks.uniqueid