关于多表的插入问题。

number1170196649 2012-04-23 10:33:30
假设现在有两个数据表分别为学生信息表(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班').请问有什么好办法解决此问题?麻烦高手解答。
...全文
163 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞剑 2012-04-24
  • 打赏
  • 举报
回复
不行的话,就先查cID,再插入。分2条sql命令做。
number1170196649 2012-04-24
  • 打赏
  • 举报
回复
正解![Quote=引用 4 楼 的回复:]
SQL code
insert into Student(sID,sName,cId) select 123456,'张三',cID from Class where cName='计科5班'
[/Quote]
IT-Style 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

SQL code
insert into Student(sID,sName,cId) select 123456,'张三',cID from Class where cName='计科5班'
[/Quote]
这个必须保证能查到班级,不然就是Null了.
ycproc 2012-04-23
  • 打赏
  • 举报
回复
如果查询存在就修改

否则就插入

存储过程 来做
number1170196649 2012-04-23
  • 打赏
  • 举报
回复
我想的是让一条语句自动完成。这岂不是要分步了?能不能用一个变量记录查询出来的cId,在插入?[Quote=引用 2 楼 的回复:]
不行的话,就先查cID,再插入。分2条sql命令做。
[/Quote]
_老吴 2012-04-23
  • 打赏
  • 举报
回复
2种方案,一个思路,就是楼上说的,先查cID,一种是在程序中做,一种是在存储过程里写,在存储过程里写执行的快点
楠_ 2012-04-23
  • 打赏
  • 举报
回复
insert into Student(sID,sName,cId) select 123456,'张三',cID from Class where cName='计科5班'
cfanser 2012-04-23
  • 打赏
  • 举报
回复
??
不清楚这样做有什么意义?我的一点想法是:在界面输入的时候,显示一个DropDownList,显示数据为cName(班级名称),值字段为cID,插入的时候不就是insert into Student(sID,sName,cId) values(123456,'张三',cID)了么!
dalmeeme 2012-04-23
  • 打赏
  • 举报
回复
不行的话,就先查cID,再插入。分2条sql命令做。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧