请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

伟伟

银牌会员

70

主题

274

帖子

2492

积分

银牌会员

积分
2492
伟伟
银牌会员   /  发表于:2020-8-22 15:23  /   查看:3655  /  回复:12
100金币
本帖最后由 伟伟 于 2020-8-26 09:17 编辑

求助大神结改一下视图:多个表拼接按ID求和错误翻倍
SELECT
A1.ID as 物料清单子表ID,
A1.数量 as 需求数量,
IFNULL(SUM(A2.数量),0) as 采购数量,
IFNULL(SUM(A3.计划到货数量),0) as 计划到货数量,
IFNULL(SUM(A4.到货数量),0) as 已到货数量,
IFNULL(SUM(A5.不合格数量),0) as 不合格数量,
A1.数量-IFNULL(SUM(A4.到货数量),0)+IFNULL(SUM(A5.不合格数量),0) as 还差数量
FROM 物料清单子表 as A1
LEFT JOIN 采购订单子表 as A2 ON A1.ID = A2.物料清单子表ID
LEFT JOIN 计划到货通知子表 as A3 ON A1.ID = A3.物料清单子表ID
LEFT JOIN 到货报检子表 as A4 ON A1.ID = A4.物料清单子表ID
LEFT JOIN 检验报告子表 as A5 ON A1.ID = A5.物料清单子表ID
GROUP BY
A1.ID




附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

供参考用:还差数量 用公式字段

12 个回复

倒序浏览
最佳答案
最佳答案
1818himis悬赏达人认证 活字格认证
高级会员   /  发表于:2020-8-22 15:23:55
来自 10#
供参考用:还差数量  用公式字段
  1. SELECT
  2. A1.ID as 物料清单子表ID,
  3. A1.数量 as 需求数量,
  4. (SELECT  IFNULL(sum(A2.数量),0) FROM 采购订单子表 as A2 WHERE A1.ID = A2.物料清单子表ID group by A2.物料清单子表ID) as 采购数量 ,
  5. (SELECT  IFNULL(sum(A3.计划到货数量),0)  FROM 计划到货通知子表 as A3 WHERE A1.ID = A3.物料清单子表ID group by A3.物料清单子表ID) as 计划到货数量,
  6. (SELECT  IFNULL(sum(A4.到货数量),0)  FROM 到货报检子表 as A4 WHERE A1.ID = A4.物料清单子表ID group by A4.物料清单子表ID) as 到货数量,
  7. (SELECT  IFNULL(sum(A5.不合格数量),0)  FROM 检验报告子表 as A5 WHERE A1.ID = A5.物料清单子表ID group by A5.物料清单子表ID) as 不合格数量
  8. FROM 物料清单子表 as A1

复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
mfkpie8
银牌会员   /  发表于:2020-8-22 23:38:44
2#
这个肯定是你业务关联 只有你清楚 应该是某个行数  的业务逻辑你还没弄好你把数据全部出来看一睛就知道了
回复 使用道具 举报
伟伟
银牌会员   /  发表于:2020-8-23 09:44:16
3#
本帖最后由 伟伟 于 2020-8-23 09:45 编辑
mfkpie8 发表于 2020-8-22 23:38
这个肯定是你业务关联 只有你清楚 应该是某个行数  的业务逻辑你还没弄好你把数据全部出来看一睛就知道了

每个表都有 物料清单子表ID,按物料清单子表ID合并、求和,空值显示0
回复 使用道具 举报
cg6207悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2020-8-23 10:40:58
4#
你使用了group by,必须保证显示的FROM 表达字段必须在 group by 分组中
在sqlite里面,不会对你忽略了A1.数量 进行报错,而SQL是会的
所以你的问题大概率出现在GROUP BY 后面的分组字段缺失
回复 使用道具 举报
伟伟
银牌会员   /  发表于:2020-8-23 11:14:08
5#
cg6207 发表于 2020-8-23 10:40
你使用了group by,必须保证显示的FROM 表达字段必须在 group by 分组中
在sqlite里面,不会对你忽略了A1. ...

感谢回复!已尝试过加上缺失的分组字段结果还是错的
回复 使用道具 举报
cg6207悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2020-8-23 11:15:35
6#
这种情况,建议你不要把所有的join都弄在一条语句里面完成
可以考虑分视图,最后拼接起来
回复 使用道具 举报
Erik.Xue讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2020-8-24 18:02:29
7#
楼主可以参考楼上大佬的意见哈~

如果您的问题已解决,请及时更新帖子的状态为“已处理”,并设置最佳答案给有帮助到你的回复;
如果您的问题还未解决,欢迎跟帖补充;
如果您有新的问题,也欢迎创建新的求助帖。
回复 使用道具 举报
伟伟
银牌会员   /  发表于:2020-8-25 08:10:11
8#
cg6207 发表于 2020-8-23 11:15
这种情况,建议你不要把所有的join都弄在一条语句里面完成
可以考虑分视图,最后拼接起来

分多个视图在拼接可以实现,但是性能降低了很多,现在测试数据很少视图要等一下才出的来。
回复 使用道具 举报
伟伟
银牌会员   /  发表于:2020-8-25 08:16:30
9#
Erik.Xue 发表于 2020-8-24 18:02
楼主可以参考楼上大佬的意见哈~

如果您的问题已解决,请及时更新帖子的状态为“已处理”,并设置最 ...

还没解决,这5个表的关系逻辑其实很清晰的。每个表都有 物料清单子表ID,按第一个表物料清单子表.ID合并、求和,空值显示0。应该有大佬可以轻松实现...
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部