一对多,如何往多的一方加数据,同时更新少的一方

Iro_ 2014-09-20 11:09:12
比如现在有三张表,专业信息-班级信息-学生信息,有没有办法在插入学生的时候自动更新专业和班级信息,如果有这个专业或班级,就直接插入,如果没有,则在专业或班级表中新建,这个可以做到吗。当然,除了把专业班级里面的数据拿出来循环对比。
我数据库学的比较渣,求大神指教。。
...全文
250 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
frankl123 2014-09-26
  • 打赏
  • 举报
回复
引用 8 楼 starsli 的回复:
[quote=引用 7 楼 frankl123 的回复:] 你的意思是班级、专业、院系的数据是从导入的学生信息数据中抽取生成的?
是,可以做到这一点吗?[/quote] 当然可以了啊,插入前exists 判断一下
jayzhihui 2014-09-21
  • 打赏
  • 举报
回复
t101lian 2014-09-20
  • 打赏
  • 举报
回复
可以的, 最好把这个放在存储过程中完成。 楼主把表结构和部分数据贴出来,
xiaodongni 2014-09-20
  • 打赏
  • 举报
回复

create table major(mno int,mname varchar(10))
insert into  major values(1,'java技术'),(2,'软件测试'),(3,'过程控制')
create table class (cno int,cname varchar(20))
insert into class values(1,'JAVA技术1班'),(1,'JAVA技术2班'),
(2,'JAVA技术2班'),
(3,'软件测试1班'),
(4,'软件测试2班'),
(5,'过程控制1班')
create table student (sno int ,sname varchar(20),cno int,cname varchar(20),mno int,mname varchar(20))
自己建立了3个表。 你是不是想实现在表STUDENT里面插入行。比如插入 insert into student values (1,'张三',1,'JAVA技术3班',4,'数据库') 对于表CLASS 更新把JAVA技术一般更新为3班,对表MAJOR 插入新的一行values(4,'数据库') 看你意思貌似是这个。但是这个需求实在没实际意义。
Iro_ 2014-09-20
  • 打赏
  • 举报
回复
引用 7 楼 frankl123 的回复:
你的意思是班级、专业、院系的数据是从导入的学生信息数据中抽取生成的?
是,可以做到这一点吗?
frankl123 2014-09-20
  • 打赏
  • 举报
回复
你的意思是班级、专业、院系的数据是从导入的学生信息数据中抽取生成的?
Iro_ 2014-09-20
  • 打赏
  • 举报
回复
引用 1 楼 t101lian 的回复:
可以的, 最好把这个放在存储过程中完成。 楼主把表结构和部分数据贴出来,
能不能帮我分析下这个需求怎么实现,学生信息要实现批量导入功能,导入的信息中的班级、专业、院系等都是名称,而不是id。但是在其他地方还要用到班级、专业、院系的信息,所以这三个必须建表。这样怎么保证学生表和其他三个表中数据的一致性。
Iro_ 2014-09-20
  • 打赏
  • 举报
回复
引用 4 楼 alimake 的回复:
表结构一团糟。 学生信息关联班级表。干嘛要用班级名称。用班级ID啊。
是比较乱,不过学生表中的班级确实用的id呀。。 能不能帮我分析下这个需求怎么实现,学生信息要实现批量导入功能,导入的信息中的班级、专业、院系等都是名称,而不是id。但是在其他地方还要用到班级、专业、院系的信息,所以这三个必须建表。这样怎么保证学生表和其他三个表中数据的一致性。
xiaodongni 2014-09-20
  • 打赏
  • 举报
回复
表结构一团糟。 学生信息关联班级表。干嘛要用班级名称。用班级ID啊。
software_artisan 2014-09-20
  • 打赏
  • 举报
回复
学生信息表中缺少班级表中的必要信息,所以是不可能实现自动插入的。再说,如果学生信息表中包含了所有的信息,那你要专业信息表、班级信息表何用?
Iro_ 2014-09-20
  • 打赏
  • 举报
回复
引用 1 楼 t101lian 的回复:
可以的, 最好把这个放在存储过程中完成。 楼主把表结构和部分数据贴出来,

专业信息表:

班级信息表:

学生信息表:
源码下载地址: https://pan.quark.cn/s/8d2c461c797c JavaWeb程序设计构成了掌握Web交互式应用程序开发的核心领域,对于初学者来说,精通这一技术具有决定性意义。在“JavaWeb程序设计(第三版)作业答案”中,我们可以预期获得针对该教材习题的一系列深入解析,从而协助学习者强化知识体系。 JavaWeb所包含的技术组件涵盖了Servlet、JSP(JavaServer Pages)、JDBC(Java Database Connectivity)以及各类框架如Spring MVC、Struts等。Servlet是Java平台提供的一种扩展服务器功能的接口,能够处理HTTP请求并生成相应的反馈。JSP则是一种用于构建动态网页的工具,它支持开发者将HTML代码与Java代码进行整合编写,从而简化了Web应用程序的开发流程。 作业答案通常会涉及以下几个核心内容: 1. **Servlet基础**:可能包含Servlet生命周期、init(), service(), destroy()方法的应用,以及如何在web.xml文件中设定Servlet的映射关系。 2. **JSP基础**:JSP的九大内置对象,如request、response、session、application等的使用,以及EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)的实际操作。 3. **HTTP协议理解**:GET和POST请求方法的差异,请求头与响应头的应用,以及会话管理的概念阐释。 4. **JDBC数据库操作**:与数据库建立连接,执行SQL指令,处理查询结果集,以及...
源码链接: https://pan.quark.cn/s/a4b39357ea24 斐讯K2是一款广受用户青睐的无线路由器,其运行表现稳定且具备较高的可操作性,在DIY爱好者群体中拥有极高的声誉。本资料将系统性地阐述斐讯K2的固件刷机方法及其关联的技术要点。固件升级是路由器爱好者改善设备性能、扩展功能的一种普遍手段,经由替换出厂固件,能够达成更个性化的网络配置、增强安全防护等目标。斐讯K2固件资源库涵盖了多种知名的非官方固件,诸如Tomato Pheonix 不死鸟、高恪、PandoraBox 潘多拉等,这些固件均具备独特的优势,能够适配不同用户的需求。 1. Tomato Pheonix 不死鸟:Tomato是一款立足于Linux的开源固件,以其精巧、高效而备受推崇。不死鸟版本是专门为华硕及斐讯路由器优化的分支,提供了卓越的QoS(服务质量)配置、详尽的图表监控以及便捷的固件升级途径。对于那些需要精准调控带宽和监测网络状态的用户而言,这是一个理想的选项。 2. 高恪:高恪固件是OpenWrt的定制化版本,着重于操作的便捷性和运行的可靠性,特别适合对路由器操作不甚熟悉的用户群体。它提供了一些实用的功能,例如内置的广告屏蔽、快速测速工具等,同时保留了OpenWrt的适应性。 3. PandoraBox 潘多拉:潘多拉盒是另一款基于OpenWrt的固件,它以丰富的插件库和强大的自定义潜力而闻名。用户能够依据个人需求安装各类插件,实现更多功能,如远程接入、DDNS(动态域名解析服务)等。 4. 官方固件的纯净版本与定制版本:官方固件通常更侧重于稳定性,纯净版意味着未预置额外的应用或服务,适合注重稳定性的用户。定制版则可能包含了制造商的特色功能或优...

22,297

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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