2017-03-06 98 views
0

我有2個表。學生和考試。我想做一個查詢,獲得高於平均test_results的學生的學生姓名(名字和姓氏)。聚合SQL函數; AVG在C#

我認爲我目前的查詢是錯誤的。也許是因爲我沒有加入這兩張牌桌?這是我的查詢(在C#)

MySqlCommand cmd = new MySqlCommand("SELECT student.studentFirstName, student.studentLastName, test.test_results FROM student, test WHERE test_results > (SELECT AVG(test_results) FROM test; "); 

你有一個錯誤的SQL語法

如果我要參加2個表。我在這兩個表中都有一個名爲studentID的列

+0

您不必在SQL語句中的聯接。你必須加入這兩張桌子。 –

+0

我這麼認爲,我在這兩個表中都有一個studentID – CsharpStudent

+0

瞭解更多關於sql連接的信息。 –

回答

1

該錯誤是由於缺少括號。你應該在FROM test之後附上括號。

但是您的查詢本身是錯誤的,需要使其正確。正確的查詢會是這樣:

SELECT student.studentFirstName, student.studentLastName, test.test_results 
FROM student, test 
WHERE student.studentID = test.studentID AND 
test_results > (SELECT AVG(test_results) FROM test); 

如果你想有與JOIN味道的解決方案,你可以這樣做:

SELECT student.studentFirstName, student.studentLastName, test.test_results 
FROM student INNER JOIN test ON student.id = test.id 
WHERE test_results >(SELECT AVG(test.test_results) FROM test);