3表联查,求sql优化,大侠进入……
时间:2011-12-19
来源:互联网
我有3个表,a,b,c
a和b的数据量很大,c的20多条
贴上sqlSQL code
也许我写的sql过于繁琐,所以求优化,或着求新的写法
大概是
表1 与 表2 是1对多
表2 与 表3 是1对多
主心骨是(其他字段的可省):
我要的到是查询表1中的字段1的表2中的条数和表3中的条数和表3中的总款(字段5678)
比如:表1 小明,表2有2条数据 (一支笔,一块橡皮) 表3 笔(3条数据(笔芯,笔套,笔盖,金额))橡皮(2条(颜色,形状,金额))
结果:小明,2,5,总金额
不知道我表达清楚没有
a和b的数据量很大,c的20多条
贴上sqlSQL code
SELECT c.字段1 AS 字段1, c.字段2 AS 字段2, COUNT(b.字段3) AS 字段3, SUM(b.字段4) AS 字段4, SUM(b.字段5) AS 字段5, SUM(b.字段6) AS 字段6, SUM(b.字段7) AS 字段7, SUM(b.字段8) AS 字段8 FROM (SELECT 字段1,字段2 FROM 表1 WHERE useable = 1 AND (role IN (111,112) )) c LEFT OUTER JOIN (SELECT a.字段1 AS 字段1, a.字段2 AS 字段2, a.字段3 AS 字段3, COUNT(j.id) AS 字段4, SUM(j.字段5) AS 字段5, SUM(j.字段6) AS 字段6, SUM(j.字段7) AS 字段7, SUM(j.字段8) AS 字段8 FROM (SELECT u.字段1 AS 字段1, u.字段2 AS 字段2, o.字段3 FROM 表1 u LEFT OUTER JOIN 表2 o ON u.字段1 = o.字段1 WHERE (o.dp_time BETWEEN '2011-11-19 00:00:00' AND '2011-12-19 23:59:59') ) a LEFT OUTER JOIN 表3 j ON a.字段3 = j.字段3 GROUP BY a.字段1, a.字段2, a.字段3) b ON c.字段1 = b.字段1 GROUP BY c.字段1, c.字段2 ORDER BY c.字段2
也许我写的sql过于繁琐,所以求优化,或着求新的写法
大概是
表1 与 表2 是1对多
表2 与 表3 是1对多
主心骨是(其他字段的可省):
我要的到是查询表1中的字段1的表2中的条数和表3中的条数和表3中的总款(字段5678)
比如:表1 小明,表2有2条数据 (一支笔,一块橡皮) 表3 笔(3条数据(笔芯,笔套,笔盖,金额))橡皮(2条(颜色,形状,金额))
结果:小明,2,5,总金额
不知道我表达清楚没有
作者: aa331730417 发布时间: 2011-12-19
作者: hefeng_aspnet 发布时间: 2011-12-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28