2017-03-05 7 views
0

私は、テーブルstudentとtestの間でクロステーブルクエリを作成しようとしています。先生が選択した特定の生徒の生徒名、生徒の姓、テスト結果、テスト日、テストタイプを選択します。私は両方のテーブルで 'StudentID'を持っているので、where節を持つと思っていました。クロステーブルSQLクエリ

私は次のコードをテストしていますが、これはうまく動作しますが、私がしたいことはしません。生徒がstudentIDを入力すると、3となります。 StudentID 3の学生のすべての列を取得する代わりに、出力は空白です。 [何もない]。

C#コード:

MySqlCommand cmd = new MySqlCommand("SELECT student.studentFirstName, student.studentLastName, test.test_date, test.test_type, test.test_results FROM student, test WHERE (student.studentID AND test.testID = '" + Convert.ToInt32(txtBoxID.Text) + "');"); 

私は間違ったクエリを使用していた場合、私はクエリを使用すべきですか?

ありがとうございます。

私はw3School上でこの質問への答えを見つけた:

MySqlCommand cmd = new MySqlCommand("SELECT test.test_date, test.test_type, test.test_results, student.studentFirstName, student.studentLastName FROM test INNER JOIN student ON test.studentID = student.studentID WHERE test.studentID = '" + txtBoxID.Text + "';"); 
+0

SQLインジェクションを防ぐためにクエリにパラメータを使用してください – Sybren

答えて

1

あなたは例えば、列に加わるようStudentIDのレコードを取得するためにjoinを使用する必要があります。

SELECT s.studentFirstName, s. studentLastName, t.test_date, t.test_type, t.test_results 
FROM student s JOIN test t ON s.StudentID = t.StudentID 
WHERE t.StudentID = ? 
0
MySqlCommand cmd = new MySqlCommand("SELECT student.studentFirstName, student.studentLastName, test.test_date, test.test_type, test.test_results FROM student, test WHERE (student.studentID AND test.studentID = '" + Convert.ToInt32(txtBoxID.Text) + "');"); 

だけ変更test.testIDtest.studentID