2017-03-06 2 views
0

Ich habe 2 Tabellen. Student und Test. Ich möchte eine Abfrage machen, die den Studentennamen (Vorname und Nachname) von Studenten erhält, die höher als der Durchschnitt test_results wurden.Aggregierte SQL-Funktionen; AVG in C#

Meine aktuelle Abfrage ist falsch, denke ich. Vielleicht weil ich mich den beiden Tischen nicht angeschlossen habe? Das ist mein Query (in 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; "); 

Sie in der SQL-Syntax

IF Ich muss kommen Sie mit den zwei Tabellen, die einen Fehler haben. Ich habe eine Spalte namens studentID in beiden Tabellen

+0

Sie können eine Verknüpfung in der SQL-Anweisung haben. Sie müssen die beiden Tabellen verbinden. –

+0

Ich dachte, ich habe eine StudentID in beiden Tabellen – CsharpStudent

+0

Erfahren Sie ein bisschen mehr über SQL Joins. –

Antwort

1

Der Fehler liegt an der fehlenden Klammer. Sie sollten eine Klammer nach FROM test haben.

Aber Ihre Abfrage selbst ist falsch und muss es richtig machen. Die richtige Abfrage wäre wie:

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); 

Wenn Sie Lösung Geschmack mit JOIN haben möchten, können Sie wie folgt tun:

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);