mysql多数据多字段优化_数据库优化——Mysql多字段多记录拼接

在通常项目中,数据库基本表和后台管理时管理员见到的表一般都是不一样的,如图一,是基于3张基本表,最后在后台管理中将3张表处理之后,将数据更清晰的展示给管理员,以便管理。

考试信息表中,存放学生编号,以及考试信息,如图二,一张考试表中存储同一学员的多次考试信息。而在后台显示的时候为方便管理,同一学员,不能存在多条记录,现就需要做以下处理:

实现功能:建立视图,将3张基本表进行拼接,显示主要信息,以考试表中的学生编号为主键,

将考试表中的Examitem、Examdate、Examresult三个字段拼接到同一字段,

多条记录拼接为一条记,最后实现如图三

通过一段时间的学习,充分感受到在数据库进行优化的好处,如果是之前,遇到这样的问题,我可能直接用PHP将数据在逐条取出,循环操作了,但是这样的效率十分低下,还可能出现之前的在循环语句中写入数据库操作,这样的代码质量肯定是不高的。

刚刚进入PHP开发,方法不当,处理繁杂,望高手提出指正,谢谢~!

0818b9ca8b590ca3270a3433284dd417.png

图一

0818b9ca8b590ca3270a3433284dd417.png

图二

0818b9ca8b590ca3270a3433284dd417.png

图三

在Mysql中视图的SQL语句如下,其中表名不是实际生产中的表名

其中主要用  conat_ws 将考试表中不同字段,多条记录拼接起来,注意要配合group by语句使用

select `学生表`.`StudentID` AS `StudentID`,`学生表`.`Studentname` AS `Studentname`,`学生表`.`Sex` AS `Sex`,`教练表`.`Coachname` AS `Coachname`,group_concat(concat_ws(',',`考试表`.`Examitem`,`考试表`.`Examdate`,`考试表`.`Examresult`) separator ',') AS `Exam`,`教练表`.`Phone` AS `Phone`,`教练表`.`CoachID` AS `CoachID` from ((`教练表` join `学生表`) join `考试表`) where ((`教练表`.`CoachID` = `学生表`.`CoachID`) and (`学生表`.`StudentID` = `考试表`.`StudentID`)) group by `学生表`.`StudentID`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值