求高效率SQL 语句.
有三个表 分别是 A表,B表,C表
A表字段如下: id,日期,单号,审核
b表字段如下: 单号,数量,物料ID.
C表字段如下: id,编号,名称,规格,所属类别ID
关系如下: A表与B表是一对多关系. 两者用 单号 字段连接
B表与C表是链接关系. 通过 B表的 物料ID与C表中的ID字段对应,以取得物料名称与编码等.
现要求如下:
需要统计一,每个月的数量,要求A表已经审核,C表中的 所属类别ID在 7,10,12中.
普通SQL语句如下:
SELECT SUM(数量) AS 1月份,物料ID FROM A表 A,B表 B,C表 C WHERE A.单号=B.单号 AND B.物料ID=C.ID AND a.审核= '1 ' and YEAR(日期)= '2007 ' AND MONTH(日期)= '1 ' AND 所属类别ID IN (7,10,12) GROUP BY 物料ID
这样相当于每月的数量只能通过12条语句计算出来,再合并,这样效率比较低,有没有更好的办法?
------解决方案--------------------效率和执行语句的多少没有直接的关系。只要保证每个语句都是效率很高的,那么就没有太大的问题。
*****************************************************************************
SELECT SUM(数量) AS 1月份,物料ID FROM A表 A,B表 B,C表 C WHERE A.单号=B.单号 AND B.物料ID=C.ID AND a.审核= '1 ' and YEAR(日期)= '2007 ' AND MONTH(日期)= '1 ' AND 所属类别ID IN (7,10,12) GROUP BY 物料ID
*****************************************************************************
数据表关联顺序,Year(日期)这样的写法需要优化,In的写法需要优化,因为In就相当于ID = 7 or ID = 10 or ID = 12