日期:2014-05-17  浏览次数:20449 次

关于多表的插入问题。
假设现在有两个数据表分别为学生信息表(Student{sID,sName,cId})和班级信息表Class{cID,cName};现在在程序中显示的是学生的信息分别有(sID,sName,cName),就是将学号,姓名、班级名显示出来。现在需要插入一条学生记录,插入的时候也是(sID,sName,cName),已知插入cName时,cName已在Class表中。但是Student中的记录的是cId,怎么直接将它插入到Student表中呢?如:插入(123456,张三,计科5班)我想写这样的语句——insert into Student(sID,sName,cId) values(123456,'张三',select cID from Class where cName='计科5班').请问有什么好办法解决此问题?麻烦高手解答。

------解决方案--------------------
不行的话,就先查cID,再插入。分2条sql命令做。
------解决方案--------------------
??
不清楚这样做有什么意义?我的一点想法是:在界面输入的时候,显示一个DropDownList,显示数据为cName(班级名称),值字段为cID,插入的时候不就是insert into Student(sID,sName,cId) values(123456,'张三',cID)了么!
------解决方案--------------------
SQL code
insert into Student(sID,sName,cId) select 123456,'张三',cID from Class where cName='计科5班'

------解决方案--------------------
2种方案,一个思路,就是楼上说的,先查cID,一种是在程序中做,一种是在存储过程里写,在存储过程里写执行的快点
------解决方案--------------------
如果查询存在就修改

否则就插入

存储过程 来做

------解决方案--------------------
不行的话,就先查cID,再插入。分2条sql命令做。
------解决方案--------------------
探讨

SQL code
insert into Student(sID,sName,cId) select 123456,'张三',cID from Class where cName='计科5班'