2015-09-25 46 views
-3

我有這2個表:排序和從其他表

School

"CREATE TABLE IF NOT EXISTS school (" + 
       "id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       "name CHAR NOT NULL" + 
       ");" 

Teacher

"CREATE TABLE IF NOT EXISTS teacher (" + 
       "id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       "school_id NOT NULL, " + 
       "name CHAT NOT NULL, " + 
       "wage REAL NOT NULL," + 
       "CONSTRAINT fk_school_id FOREIGN KEY (school_id) " + 
       "REFERENCES school (id) ON DELETE CASCADE" + 
       ");" 

,我需要選擇所有學校通過總量工資排序花費在教師工作人員身上。

例子: 教師

id, school_id, name, wage 
1, 1, 'teacher1', 2000 
2, 1, 'teacher2', 1500 
3, 2, 'teacher3', 5600 
4, 3, 'teacher4', 4300 
5, 4, 'teacher5', 5000 
6, 4, 'teacher6', 3500 
7, 4, 'teacher7', 4000 

這應該是預期的結果:

school.id, school.name 
4, 'school 4' 
2, 'school 2' 
3, 'school 3' 
1, 'school 1' 
+1

那你試試? –

+0

我試過了,非常接近下面的答案,但我不知道如何通過SUM進行排序。 SELECT school.id,school.name,SUM(teacher.wage) 從學校JOIN上teacher.school_id = school.id GROUP BY教師school.id,school.name – cRobot

回答

2

SQL查詢可以是:

SELECT s.id, s.name, SUM(t.wage) 
FROM school AS s 
JOIN teachers AS t on t.school.id = s.id 
GROUP BY s.id, s.name 
ORDER BY 3 DESC; 
+0

謝謝你的回覆, 我'得到這個錯誤:「執行查詢時發生錯誤:接近」3「:語法錯誤」 – cRobot

+0

@ User2077248,我更新了我的答案 – LaurentY

+0

op稱爲薪水工資,您應該通過SUM(t.salary)不是預期產出的一部分 –