sql-多表联合查询

来源:互联网 发布:治毛囊炎的药膏 知乎 编辑:程序博客网 时间:2024/06/09 20:57

      在做项目的时候经常会遇到对数据库进行查询,如果业务比骄傲简单,那查询的时候相对来说也比较简单,但

是如果业务复杂,需要关联多张表,将其查询的结果返回,那么该用什么方法呢?


例子:

      有四张表,学生信息表,专业表,学院表,年级表,所要查询出来的内容:根据学号查询学生的姓名,性别,

专业,学院,年级。

      怎么写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>

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

          

1 0