有三个表 A 有工号p,姓名n,日期date,部门d,形体no,产量num每日工资wage 表A存放员工每日产量,并有一个初始的工资
表B有工号,姓名,日期,部门存放每日汇总后的工资(同工号同日期会有不同的形体即表A会有多条纪录,星期六按双倍算),现在要查询一定日期范围的产量和工资,
例如:
A班 20080101 001 张三 100只 30 60
A班 20080102 001 张三 80只 25 25
A班 20080103 001 张三 75只 24 24
合计:109
SELECT A.P,A.N,A.DATE,A.D,A.WAGE,B.合计 FROM A LEFT OUTER JOIN
(SELCET P,D,DATE,SUM(WAGE) AS 合计 FROM B WHERE DATE BETWEEN 0101 AND 0103 GROUP BY P,D,DATE ) B ON A.P=B.P AND A.D=B.D
当查询的日期范围很大的时候,查询就会很慢 要得出合计的工资,左联接的B表有没有什么方法可以改善下 提高运算速度?
表B有工号,姓名,日期,部门存放每日汇总后的工资(同工号同日期会有不同的形体即表A会有多条纪录,星期六按双倍算),现在要查询一定日期范围的产量和工资,
例如:
A班 20080101 001 张三 100只 30 60
A班 20080102 001 张三 80只 25 25
A班 20080103 001 张三 75只 24 24
合计:109
SELECT A.P,A.N,A.DATE,A.D,A.WAGE,B.合计 FROM A LEFT OUTER JOIN
(SELCET P,D,DATE,SUM(WAGE) AS 合计 FROM B WHERE DATE BETWEEN 0101 AND 0103 GROUP BY P,D,DATE ) B ON A.P=B.P AND A.D=B.D
当查询的日期范围很大的时候,查询就会很慢 要得出合计的工资,左联接的B表有没有什么方法可以改善下 提高运算速度?
/*等同于下*/
SELECT A.P,A.N,A.[DATE],A.D,A.WAGE,SUM(B.WAGE) AS 合计
FROM A LEFT OUTER JOIN B ON A.P=B.P AND A.D=B.D
WHERE B.[DATE] BETWEEN 0101 AND 0103
GROUP BY A.P,A.N,A.[DATE],A.D,A.WAGE,B.P,B.D,B.[DATE]
合計的結果就不是0101 and 0103 之間的總和了 合计
A班 20080101 001 张三 100只 30 60 109
A班 20080102 001 张三 80只 25 25 109
A班 20080103 001 张三 75只 24 24 109
合计:109
A班 20080102 001 张三 80只 25 25 25
A班 20080103 001 张三 75只 24 24 24
我想要的是:
A班 20080101 001 张三 100只 30 60 109
A班 20080102 001 张三 80只 25 25 109
A班 20080103 001 张三 75只 24 24 109