2013-06-03 75 views
0

嘿我試圖訂購使用返回的結果從一個子查詢的SQL查詢即訂購使用返回的結果從一個子查詢的SQL查詢

SELECT tb1.stud_id , tb1.stud_name , (SELECT sum(score) FROM scores WHERE student_id = tb1. 
student) AS total_marks 
FROM Students_info AS tb1 
GROUP BY tb1.stud_id , tb1.stud_name 
ORDER BY total_marks DESC 

我也曾嘗試

ORDER BY (SELECT sum(score) FROM scores WHERE student_id = tb1.student) DESC 

援助對此將不勝感激。

+1

這是怎麼回事?它是否運行並且不會產生好的結果?這裏的問題在哪裏? – Reinderien

+0

同意上面的評論 - 我們可以有額外的細節嗎?從我收集的信息 - 這聽起來像你試圖做的是你的子查詢左連接到第一個查詢。利用連接和ON語法而不是WHERE。 – Joe

回答

4

我對您的查詢感到困惑,您所訂購的select語句將爲每個學生返回相同的結果,因爲它與students_info表無關。

我想你想是這樣的:

SELECT tb1.stud_id , tb1.stud_name , SUM(tb2.score) AS total_marks 
FROM Students_info AS tb1 
LEFT JOIN scores AS tb2 
    ON tb1.stud_id = tb2.student_id 
GROUP BY tb1.stud_id , tb1.stud_name 
ORDER BY total_marks DESC 
+0

非常相似,我在想什麼 – Joe

+0

+1打我吧:)和左邊的加入很好的工作;到底需要在原始文件中複製行爲。 –

+0

基於查詢數據,他的子查詢中有一個where子句,所以它不應該爲每個學生返回相同的結果。另外,我不相信你可以按照你給出的計算字段的字段名稱來排序,除非你已經派生了表格。 – liebs19

0

我發現什麼不對您的查詢。試試這個SQL。它會工作。

SELECT tb1.stud_id , tb1.stud_name , sum(tb2.score) AS total_marks 
FROM Students_info AS tb1 
LEFT JOIN scores AS tb2 
ON tb1.student_id=tb2.student_id 
GROUP BY tb1.stud_id , tb1.stud_name 
ORDER BY sum(tb2.score) DESC 
+0

這更像我現在所擁有的。我仍然不明白爲什麼它在早些時候使用子查詢而不是JOIN進行工作。謝謝。 – jmsiox