2017-03-06 67 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);