热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL中对查询的结果集取交集如何实现

MySQL中对查询的结果集取交集如何实现需求:通过入学批次、层次、课程名称、专业和统考科目为教学课程与统考科目设定对应关系,可通过选多个专业对教学课程与统考课程进行对应。www.2cto.com问题:级联---...SyntaxHighlighter.all();

MySQL中对查询的结果集取交集如何实现
 
需求:通过入学批次、层次、课程名称、专业和统考科目 为教学课程与统考科目设定对应关系,可通过选多个专业对教学课程与统考课程进行对应。
   www.2cto.com  
问题:级联---入学批次影响层次,入学批次与层次影响专业、入学批次层次与专业影响课程名称。当选了多个专业时,课程名称下拉框如何显示多个专业共有的课程(如果不能保证课程共有,可能会添加一些专业没有的课程对应关系)呢。
 
解决方案:
为了从略,这里只写出入学批次层次与专业影响课程名称的级联,也就是通过入学批次层次与专业来查询课程名称,传值都用ID,查询参数设置省略了。
 
方案一、临时表:
String queryBasic= “select model from ” ;
StringBuilder queryString=new StringBuilder();
queryString.append(queryBasic);
For(int i=0;i
       queryString.append(“(select model from TeachingPlan_CourseDetail model where model.grade=:grade and model.educationLevel and model.specialId=:specialId)  a”);
       queryString.append(i+ “”);
       if(i
              queryString.append(“,”);
}
}
If(specialIds.length>1){
queryString.append(“ where a”);
queryString.append(1+ “”);
queryString.append(“. specialId”
if(i
                     queryString.append(“=”);
}
}
 
方案二、交集join
String queryBasic= “select model from ”;
StringBuilder queryString=new StringBuilder();
queryString.append(queryBasic);
For(int i=0;i
       queryString.append(“(select model from TeachingPlan_CourseDetail model where model.grade=:grade and model.educationLevel and model.specialId=:specialId) as a ”);
       queryString.append(i+ “”);
       if(i
              queryString.append(“cross”);
}
}
If(specialIds.length>1){
For(int i=0;i
              queryString.append(“a”+i);
              queryString.append(“.specialId”);
              if(i
                     queryString.append(“=”);
}
}
}
方案三、子查询与上面类似,略。
 

推荐阅读
author-avatar
Reaki是睿睿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有