2017-03-07 12 views
-2

私は2つのテーブルを持っています。学生とテスト。私は "test.test_results"の中で最高の価値を持っている学生の学生名(ファーストネームとラストネーム)を取得するクエリを作りたいと思います。私は2つのクエリを試してみましたが、両方は私に私が欲しいの出力が得られていない:集計SQL関数MAX

SELECT student.studentFirstName, student.studentLastName, test.test_results, FROM student INNER JOIN test ON student.studentID = test.studentID where MAX(test.test_results) ; 

このクエリが間違っている私は考え、私にエラーを与えます。このクエリが実行され、私に最高の結果を得た学生を与える

SELECT student.studentFirstName, student.studentLastName, test.test_results, MAX(test.test_results) FROM student INNER JOIN test ON student.studentID = test.studentID; 

は、しかし、それは「MAX(test.test_result)」

という名前の余分な列を作成し、私は私の名前を与えてクエリを作成するにはどうすればよいですテーブルテストから最も高いtest_resultsを得た学生の

答えて

0

サブクエリを使用して最高のテスト結果を見つけ、その値に基づいて生徒の行を選択できます。

SELECT student.studentFirstName, student.studentLastName, test.test_results FROM student INNER JOIN test ON student.studentID = test.studentID WHERE test.test_results = (SELECT MAX(test_results) FROM test) 

ここではSELECT MAX(test_result) FROM testとし、その値に関連付けられている生徒を選択します。

+0

ありがとうございますが、1つのクエリで可能ですか、より効率的な方法がありますか? – CsharpStudent