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>

    这样一条简单左连接就完成了,减少了一条一条查询所消耗的时间,提高了效率。

          

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值