在Mysql中将列表插入到单个列中

在Mysql中将列表插入到单个列中,mysql,Mysql,我有这样的想法: CREATE TABLE coursedisciplines ( courseID int references curso (CID), disciplineID int references materias (MID), constraint pkcoursedis primary key (courseID, disciplineID) ) 课程:CID-CName 纪律:中级MNamev-MProf 我必须创建一个学科列表,因为一门课程将有多个学科。所以我按照这个创

我有这样的想法:

CREATE TABLE coursedisciplines (
courseID int references curso (CID),
disciplineID int references materias (MID),
constraint pkcoursedis primary key (courseID, disciplineID)
)
课程:CID-CName 纪律:中级MNamev-MProf 我必须创建一个学科列表,因为一门课程将有多个学科。所以我按照这个创建了第三个表,就像这样:

CREATE TABLE coursedisciplines (
courseID int references curso (CID),
disciplineID int references materias (MID),
constraint pkcoursedis primary key (courseID, disciplineID)
)
我能够为第一个table课程和第二个规程添加数据。遗憾的是,当尝试使用第三个连接时,我得到了一个关于语法的错误。我查找了文档,但没有找到我要查找的内容。这里是代码的一部分

id = cmd.LastInsertedId;

try
{
    cmd.CommandText = "INSERT INTO materias(MName, MProf) VALUES (@MName, @MProf)";
    cmd.Parameters.AddWithValue("@MName", txtMName.Text);
    cmd.Parameters.AddWithValue("@MProf", txtMProf.Text);

    cmd.ExecuteNonQuery();

    //The error is below
    cmd.CommandText = "INSERT INTO coursedisciplines(courseID, disciplineID) VALUES(id, SELECT MID FROM discipline WHERE MName = '"+ txtMName.Text +"')"; 
    cmd.ExecuteNonQuery();
}
你们知道怎么了吗?这种方法真的不好吗?我读了一些关于序列化的文章,但不想这样做


编辑它在这里工作。必须使用select insert而不是select values。谢谢

我不知道这是整个问题的症结所在,但是

INSERT INTO coursedisciplines(courseID,disciplineID) 
VALUES(id, SELECT MID FROM discipline WHERE MName = '"+ txtMName.Text +"')

mysql将尝试从CourceDictions表中不存在的字段“id”中插入值。您需要从前面的insert中获取id,并在此查询中重用该id。此外,子查询还需要位于以下位置:选择MID…+'这可能就是语法错误的原因

我不知道这是整个问题所在,但是

INSERT INTO coursedisciplines(courseID,disciplineID) 
VALUES(id, SELECT MID FROM discipline WHERE MName = '"+ txtMName.Text +"')
mysql将尝试从CourceDictions表中不存在的字段“id”中插入值。您需要从前面的insert中获取id,并在此查询中重用该id。此外,子查询还需要位于以下位置:选择MID…+'这可能就是导致语法错误的原因

您的第二次插入不正确。你想插入。选择而不是插入。价值观:

我怀疑@id应该是查询中的一个参数,因此您可以传入它。

您的第二次插入不正确。你想插入。选择而不是插入。价值观:


我怀疑@id应该是查询中的一个参数,因此您可以传入它。

错误消息是什么?请添加特定于语言的标记。是C还是什么?错误是:行中有一个sintax错误,请检查文档,诸如此类。上次我添加一种语言时,你们否决了我关于它与c有什么关系的问题。因此,由于它只是关于mysql的,我认为没有必要在帖子中添加c。错误消息是什么?请添加一个特定于语言的标记。是C还是什么?错误是:行中有一个sintax错误,请检查文档,诸如此类。上次我添加一种语言时,你们否决了我关于它与c有什么关系的问题。所以,因为它只是关于mysql的,所以我认为没有必要在帖子中添加c。Id是一个参数,我在人员创建课程时得到它。现在它可以正常工作了。我没有15个名声,所以我不能胜过你。对不起,没错。Id是一个参数,我在人员创建课程时得到它。现在它可以正常工作了。我没有15个名声,所以我不能胜过你。对不起,是的,这是精选的。谢谢你的时间,伙计!是的,这是精选的。谢谢你的时间,伙计!