2017-03-05 61 views
0

我想在表学生和测试之间进行交叉表查询。我想为教师选择的特定学生选择学生的名字,学生的姓氏,考试成绩,考试日期和考试类型。由于我在两张表中都有'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

您应该使用join获得与StudentID记录为加盟塔,例如:

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.testID to test.studentID