使用外键从多个表中插入数据

时间:2017-10-09 12:08:48

标签: mysql sql vb.net

我想只用一个按钮从一个表和另一个表中插入数据。

以下是我的表格:

用户表:

bottomLayoutGuide.length

课程表:

id      course_id      firstname      middlename      lastname
1       1              foo            bar             foos
2       1              fooos          bars            fooss
3       2              ipsum          fooss           lorem

用户和课程表中的两个id都是自动增量。现在我想插入数据。示例:firstname = foo,middlename = bar,lastname = bar,course = BSIT。如您所见,我想键入连接到用户的课程。现在问题是我想自动插入外键以便连接它们。

我输出两个表的查询是:

id      course_name
1       BSIT
2       Computer Science

以下是我目前插入数据的代码:

SELECT user.id, user.firstname, user.middlename, user.lastname, course.course_name 
FROM course INNER JOIN user ON course.id = user.course_id

我被困在这里。这就是为什么我没有包括课程表,因为我不知道该怎么做。请帮帮我。

1 个答案:

答案 0 :(得分:0)

正如@Steve所提到的,考虑一个ComboBox对象(假设是Windows表单),您可以使用数据源查询填充数据源查询,这是@ Steve自己的答案here所示。

从那里,在您的SQL语句中插入comboBox1.SelectedValue和其他列。通常,对于预定列表,您不要让用户在开放式文本框中键入类似课程名称的字符串,因为拼写错误和不一致性将与实际值不对齐:

Dim sql As String = "INSERT INTO `user` (firstname, middlename, lastname, course_id) VALUES (?fname, ?lname, ?mname, ?course)"

cmd = New MySqlCommand(sql, conn)

cmd.Parameters.AddWithValue("?fname", TextBox1.Text)
cmd.Parameters.AddWithValue("?lname", TextBox2.Text)
cmd.Parameters.AddWithValue("?mname", TextBox3.Text)
cmd.Parameters.AddWithValue("?course", ComboBox.SelectedValue)

使用课程名称文本框的现有设置的替代方法是INSERT INTO...SELECT查询,这又是不可靠的,因为用户可能会拼写错误,添加特殊字符,甚至包括空格到值。以下假设 course_name 是唯一的。

INSERT INTO `user` (firstname, middlename, lastname, course_id)
SELECT ?fname, ?lname, ?mname, c.course_id
FROM course c
WHERE c.course_name = ?course