`
zhoutong123a
  • 浏览: 3785 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

多表链接 Left join

 
阅读更多

一个我写的实例:其中多表连接,一共连接了3个表。使用聚集函数SUM,用到了GROUP BY

SELECT a.[UserID],b.[Name],sum (c.[Money]+c.[Bank])as TotalMoney
FROM Table1 a(nolock)
 
LEFT JOIN Table2 b(nolock) on a.[UserID] = b.[UserID] 
LEFT JOIN Table3 c(nolock) ON b.[UserID]=c.[UserID] 

WHERE  a.[UserID] = b.[UserID] and a.[UserID] = c.[UserID] and a.[Time] >= '2005-01-01' AND a.[Time] <= '2006-12-31' 

GROUP BY a.[UserID],b.[Name]

ORDER BY a.[Time] DESC 

优化一下
SELECT a.[UserID],b.[Name],sum (c.[Money]+c.[Bank])as TotalMoney
FROM Table1 a(nolock)
LEFT JOIN Table3 c(nolock) ON a.[UserID]=c.[UserID],  Table2 b(nolock) 

WHERE  a.[UserID] = b.[UserID] and a.[Time] >= '2005-01-01' AND a.[Time] <= '2006-12-31' 

GROUP BY a.[UserID],b.[Name]

ORDER BY a.[Time] DESC 


================================================================================
Left Join 语法:
select   *   from
table1   
left   join   table2   on   条件1   
left   join   table3   on   条件2   
left   join   table4   on   条件3  
where   条件4

GROUP BY 说明:

group by 

    在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

   在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数

   select max(sal),job emp group by job;
   (注意max(sal),job的job并非一定要出现,但有意义)

   查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。

  select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

  当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件
 
  where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
  having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

  查询每个部门的每种职位的雇员数
  select deptno,job,count(*) from emp group by deptno,job;
分享到:
评论

相关推荐

    SQL 外链接操作小结 inner join left join right join

    SQL 外链接操作小结 inner join left join right join ...外链接操作是关系型数据库管理系统中的一种基本操作,用于从多个表中检索数据。它可以用于实现多种业务逻辑,例如数据更新、数据插入、数据查询等。

    C#多表链接的条件语句查询

    在C#编程中,进行多表链接查询是数据库操作中常见的任务,特别是在处理复杂的数据关系时。本主题主要探讨如何使用C#与SQL Server或其他支持SQL的数据库进行多表连接查询,以及如何设置多条件查询。 首先,我们需要...

    数据库的交叉表、左链接

    在数据库查询中,连接(JOIN)用于合并两个或更多表的数据。左链接返回左表的所有记录,即使在右表中没有匹配的记录。如果左表的一个记录在右表中没有匹配,结果集将包含NULL值。这在你需要保留完整左侧数据的情况下...

    django foreignkey外键使用的例子 相当于left join

    在Django的ORM(对象关系映射)中,当我们使用ForeignKey来创建两个表之间的链接时,它实际上是在模拟SQL数据库中的JOIN操作。特别是,当需要实现类似SQL中的LEFT JOIN操作时,Django的ForeignKey可以帮助我们实现。...

    sql 左连接和右连接的使用技巧(left join and right join)

    在SQL查询中,连接操作是将两个或多个表的数据结合在一起的关键部分,这对于数据分析和信息检索至关重要。在众多的连接类型中,左连接(LEFT JOIN)和右连接(RIGHT JOIN)是两种常用的外连接方式,它们允许我们处理...

    MySQL多表查询实例详解【链接查询、子查询等】

    本篇文章将深入探讨如何使用链接查询(JOIN)和子查询来实现多表查询,以满足不同场景下的数据检索需求。 首先,我们要理解的是链接查询。在上述例子中,我们有两张表:`department`(部门表)和`employee`(员工表...

    如何实现多数据表关联呢?Delphi的方法实例..rar

    在多表关联中,可以创建多个TDataSource,一个对应于每个数据表,然后在它们之间建立链接。 7. **数据绑定**:Delphi的数据绑定机制使得界面上的控件可以直接显示和编辑TDataSet中的数据。在多表关联的情况下,通过...

    Oracle左连接返回多条记录中一条记录的查询语句

    Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录

    thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例

    本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下: 1. 多数据库连接 方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为...

    MySQL多表链接查询核心优化

    在MySQL数据库中,多表链接查询是常见的操作,特别是在处理复杂的数据分析和报表生成时。然而,当数据量达到百万级别甚至更大时,不合理的多表查询可能导致性能急剧下降。因此,掌握多表查询的核心优化策略至关重要...

    siebel视频之 Link、Join、Drilldown配置

    Siebel支持多种类型的Join,包括INNER JOIN(只返回两个表中匹配的行)、LEFT JOIN(返回左表的所有行,即使右表没有匹配项)等。有效的Join配置能提高查询效率,减少不必要的数据传输,从而优化系统性能。 3. **...

    数据库连接表查询

    - **左外连接(LEFT OUTER JOIN)**:除了返回符合连接条件的行,还会返回左表中不符合连接条件但符合条件的数据行。 - **右外连接(RIGHT OUTER JOIN)**:除了返回符合连接条件的行,还会返回右表中不符合连接条件...

    易语言MDB多表查询源码

    在Access数据库中,可以通过SQL(结构化查询语言)来实现多表联接查询,例如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN等。这些JOIN操作允许我们根据共同的字段将多个表的数据合并在一起,以获取更全面的信息。 ...

    Mysql中Join的使用实例详解

    本章节主要讲解了在MySQL中使用JOIN进行多表查询的方法,特别是LEFT JOIN和JOIN(通常指的是INNER JOIN)的区别。LEFT JOIN返回左表格的所有记录,即使在右表格中没有匹配的记录,而未匹配的记录的字段值将显示为...

    数据库左右链接

    在数据库查询中,连接(Join)是一种非常重要的操作,用于合并两个或多个表中的数据。本文将详细介绍三种主要的连接类型:**内连接(Inner Join)**、**左连接(Left Join)**、**右连接(Right Join)**。通过具体...

    SQL Server高级内容之子查询和表链接概述及使用

    - 当涉及到多表时,可以使用别名简化查询,如`as 名字`。 接着,我们讨论表链接,它允许从多个表中提取数据并合并成一个单一的结果集,但不同于UNION,它不会消除重复行。 1. **交叉连接(Cross Join)**:交叉...

    简单学习SQL的各种连接Join

    最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)、SQL LEFT JOIN、SQL RIGHT JOIN、SQL FULL JOIN,其中前一种是内连接,后三种是外链接。 假设我们有两张表,Table A是左边的表,Table B是右边的表。 id ...

Global site tag (gtag.js) - Google Analytics