sql-多表联合查询
2015-12-14 15:48
197 查看
在做项目的时候经常会遇到对数据库进行查询,如果业务比骄傲简单,那查询的时候相对来说也比较简单,但
是如果业务复杂,需要关联多张表,将其查询的结果返回,那么该用什么方法呢?
例子:
有四张表,学生信息表,专业表,学院表,年级表,所要查询出来的内容:根据学号查询学生的姓名,性别,
专业,学院,年级。
怎么写sql语句去实现这个业务呢?这里面根据学生的学号去查询学生表中的姓名、性别、专业id;根据所查
询出来的专业id,到专业表中查询专业的名称,学院id;根据学院id在学院表中查询学院名称,在年级表中根据学生
的班级号查询年级信息:
这里利用sql语句的外连接进行查询。
这样一条简单左连接就完成了,减少了一条一条查询所消耗的时间,提高了效率。
是如果业务复杂,需要关联多张表,将其查询的结果返回,那么该用什么方法呢?
例子:
有四张表,学生信息表,专业表,学院表,年级表,所要查询出来的内容:根据学号查询学生的姓名,性别,
专业,学院,年级。
怎么写sql语句去实现这个业务呢?这里面根据学生的学号去查询学生表中的姓名、性别、专业id;根据所查
询出来的专业id,到专业表中查询专业的名称,学院id;根据学院id在学院表中查询学院名称,在年级表中根据学生
的班级号查询年级信息:
这里利用sql语句的外连接进行查询。
LEFT JOIN 关键字语法
<pre name="code" class="sql">SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
//在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
具体的代码实现:
<span style="font-family:KaiTi_GB2312;font-size:18px;">// 根据学号查询学生姓名,性别,专业,学院,年级 sql = "select ts.name,ts.sex,tp.professionalName,ti.InstitutionName,tg.gradeName from ((" + dataBaseName + ".tb_student ts left JOIN " + dataBaseName + ".tb_professional tp on ts.professionalId = tp.id) left JOIN " + dataBaseName + ".tb_institution ti on tp.institutionId = ti.id) LEFT JOIN " + dataBaseName + ".tb_grade tg on ts.classesId = tg.classesId where code='" + Code + "'";</span>
这样一条简单左连接就完成了,减少了一条一条查询所消耗的时间,提高了效率。
相关文章推荐
- mysql表的死锁解决
- spark-sql 不兼容的hive语法列表
- 过滤器里设置编码,防止提交的数据不能写入数据库
- Oracle使用记录
- SQL中ISNULL用法示例
- Mysql下的数据库备份
- spark 的sql解决方案
- oracle新增(ibatis)
- SQL语句case when外用sum与count的区别
- mysql--windows忘记密码
- CentOS7.1安装Oracle 12.1客户端以及cx_Oracle
- 问题:oracle 两个表之间的修改;结果:ORACLE 两个表之间更新的实现
- SQL Server2012中如何通过bak文件还原SQL Server2012数据库
- oracle 对对表匹配的进行修改匹配不上的可以进行新增 (MERGE INTO)
- Redis
- [How to]集成SQLite3
- sql语句执行插入后返回ID
- 找到一篇比较全面的解决mysql最大连接数Too many connections问题的帖子
- keepalived+Mysql主从配置实验
- PostgreSQL Type的创建与Type在函数中的使用