维过滤

阅读(2675) 标签: on, where,

功能介绍:

DQL支持在 ON后面写过滤条件,由于ON 的典型写法是维表名.字段名,所以ON后面的条件也就是对维表进行过滤,如果在多表连接中,多表的字段指向同一个维,则维后面的过滤条件,将会在所涉及的每一个表中进行过滤,所就是说,它能够让我们在多表关联时,相同的条件只写一次就可以了。

语法描述:

SELECT T.f(...),......, T.F..L',......, ONT'…C AS D WHERE,…

FROM T

BY T.F..L.....

参数说明:

WHERE   基于D写的过滤条件

举例:

 

1

SELECT 回款单.SUM(金额) 回款金额

ON WHERE >2011

FROM 回款单

BY 回款日期#

对“年”维进行过滤,且ON不得省略

2

SELECT

回款单.SUM(金额) 回款总额, 订单.SUM(订单金额) 订单总额

ON AS 出生年月, AS 月份

FROM 回款单

WHERE fk3.出生日期#>1978

BY fk3.出生日期#, 回款日期#

UNION 订单

WHERE fk2.出生日期#>1978

BY fk2.出生日期#,签单日期#

在出生年月后面我们对销售的出生年月进行过滤只取1978年之后出生的销售员工的数据,由于我们是针对维进行的过滤,而不是某一具体的表,所以它的作用相当于,对“回款单”表,“订单”表分别过滤1978年之后出生的员工的销售数据,然后再进行JOIN操作

知识点:

1) 可以在ON后面写过滤条件,对维进行过滤的条件会直接作用于与ON对齐的每个BY的字段中

2) ON后面有多个字段时,可以为每个字段写一个WHERE条件(注:需要写在所有ON字段之后),条件越多,关联的表越多,维过滤的收益就越大