2017-03-05 62 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