MySQL三张表根据某一个字段向其中一张表插入数据
我现在有三张表,一张表是评委表,一张表是学生表,一张表是打分表评委表的字段有id,name,password,学生表字段有id,title(名称),score(打分),r...
我现在有三张表,一张表是评委表,一张表是学生表,一张表是打分表
评委表的字段有id,name,password,学生表字段有id,title(名称),score(打分),rank(名次),评分表有id,appid(项目id),expertid(评委id),score(打分),我现在想在评分表中插入评委打的分数,记录在评分表中,一共有7个评委,学生表中打分分数是7个评委打出来分数的平均数,应该怎么写SQL语句啊,是MySQL数据库,并且要根据学生表中的score平均数对rank这个字段进行从大到小的排序,应该怎么操作啊,求详细解释。解答出来可以微信转账,我的财富值不多。私人奖励,求解!!!!!着急!!!! 展开
评委表的字段有id,name,password,学生表字段有id,title(名称),score(打分),rank(名次),评分表有id,appid(项目id),expertid(评委id),score(打分),我现在想在评分表中插入评委打的分数,记录在评分表中,一共有7个评委,学生表中打分分数是7个评委打出来分数的平均数,应该怎么写SQL语句啊,是MySQL数据库,并且要根据学生表中的score平均数对rank这个字段进行从大到小的排序,应该怎么操作啊,求详细解释。解答出来可以微信转账,我的财富值不多。私人奖励,求解!!!!!着急!!!! 展开
1个回答
展开全部
我对你的要求理解是学生白的id是评分表的项目id,并且评委已经对每个项目打好分了。
并且学生表(xuesheng),评委表(pingwei),评分表(pingfen)都有基础的数据。
第一条sql是在学生表里插入平均分,
第二条sql实在学生表根据分数里插入名次,
UPDATE xuesheng a SET a.score = (SELECT score FROM (SELECT appid, AVG(score) score FROM pingfen GROUP BY appid) b WHERE a.id=b.appid);
UPDATE xuesheng a SET a.rank = (SELECT rank FROM (SELECT id,@a:=@a+1 rank FROM xuesheng WHERE (SELECT @a:=0) OR TRUE ORDER BY score DESC) b WHERE a.id=b.id );
并且学生表(xuesheng),评委表(pingwei),评分表(pingfen)都有基础的数据。
第一条sql是在学生表里插入平均分,
第二条sql实在学生表根据分数里插入名次,
UPDATE xuesheng a SET a.score = (SELECT score FROM (SELECT appid, AVG(score) score FROM pingfen GROUP BY appid) b WHERE a.id=b.appid);
UPDATE xuesheng a SET a.rank = (SELECT rank FROM (SELECT id,@a:=@a+1 rank FROM xuesheng WHERE (SELECT @a:=0) OR TRUE ORDER BY score DESC) b WHERE a.id=b.id );
更多追问追答
追问
往学生表中插入的分数是从评分表中计算下来的平均分(也就是7个评委打的分数的平均分,这个是从页面获取数据插入进去的),UPDATE的意思是这三表中已经有基本的数据,进行更新吗?
追答
你现在需要有的数据是学生表里面id,title得有吧,
评委表里面应该有7条评委的信息吧,
评分表里面应该有每个评委对每个项目的打分吧。这就是基础数据了。
根据这些数据执行第一条,想学生表里的score列写入平均分,
第二条是根据学生表里的score列的值向rank写入名次
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询