求助!两表查询求和及求减

[复制链接]
查看11 | 回复8 | 2021-1-27 06:22:03 | 显示全部楼层 |阅读模式
有两个表,coating_out(发出表),coating_in(收入表),如图:





两个表中有一个共同的字段coatoutno,coatingout表中coatoutno是唯一的,coatingin(收入)表中coatoutno有重复的,现在需要在coatingin(收入)表中根据coatoutno的号码,把coatinqty(收入数量)列的数量相加,再用coatingout(发出)表中coatoutqty(发出数量)减去coatinqty的和,求出结果放在balance(余数)列中。
自己写的SQL语句如下:


运行结果应该是10000,实际是60000,如下图:


哪位大神看下错误在哪里?如何解决?谢谢!

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:22:03 | 显示全部楼层
先GROUPSUM两表分别,然后再JOIN
回复

使用道具 举报

千问 | 2021-1-27 06:22:03 | 显示全部楼层
引用1楼ACMAIN_CHM的回复:先GROUPSUM两表分别,然后再JOIN
版主你好!刚学mysql,具体要怎么写?能否写出来?谢谢!

回复

使用道具 举报

千问 | 2021-1-27 06:22:03 | 显示全部楼层
selectc.coatoutqty-b.coatinqtysumbalancefromcoating_outc,
(selecta.*,sum(coatinqty)coatinqtysumfromcoating_inagroupbya.coatoutno)bwherec.coatoutno=b.coatoutno
回复

使用道具 举报

千问 | 2021-1-27 06:22:03 | 显示全部楼层
selecta.coatoutqty-b.sumcoatinqtybalancefromcoating_outa,
(selectcoatoutno,sum(coatinqty)sumcoatinqty
fromcoating_in
groupbycoatoutno)b
wherea.coatoutno=b.coatoutno
你运行的结果不对,是SQL语问因为产生笛卡尔积了,计算的是产生笛卡尔积结果集后的值。
3楼写的SQL语句是对的,但不太严谨。
回复

使用道具 举报

千问 | 2021-1-27 06:22:03 | 显示全部楼层
引用4楼chaigang的回复:selecta.coatoutqty-b.sumcoatinqtybalancefromcoating_outa,
(selectcoatoutno,sum(coatinqty)sumcoatinqty
fromcoating_in
groupbycoatoutno)b
wherea.coatoutno=b.coatoutno
你运行的结果不对,是SQL语问因为产生笛卡尔积了,计算的是产生笛卡尔积结果集后的值。
3楼写的SQL语句是对的,但不太严谨。

这个结果对了,但是写到PHP代码中在网页中运行就不行了,网页代码懂吗?怎么写?
回复

使用道具 举报

千问 | 2021-1-27 06:22:03 | 显示全部楼层
引用5楼wxjdonny的回复:Quote: 引用4楼chaigang的回复:
selecta.coatoutqty-b.sumcoatinqtybalancefromcoating_outa,
(selectcoatoutno,sum(coatinqty)sumcoatinqty
fromcoating_in
groupbycoatoutno)b
wherea.coatoutno=b.coatoutno
你运行的结果不对,是SQL语问因为产生笛卡尔积了,计算的是产生笛卡尔积结果集后的值。
3楼写的SQL语句是对的,但不太严谨。

这个结果对了,但是写到PHP代码中在网页中运行就不行了,网页代码懂吗?怎么写?

不好意思,代码之类的就不懂了
回复

使用道具 举报

千问 | 2021-1-27 06:22:03 | 显示全部楼层
selectc.coatoutqty-b.coatinqtysumbalancefromcoating_outc,
(selecta.*,sum(coatinqty)coatinqtysumfromcoating_inagroupbya.coatoutno)bwherec.coatoutno=b.coatoutno
回复

使用道具 举报

千问 | 2021-1-27 06:22:03 | 显示全部楼层
可以使用窗口函数,参考《如何协助MySQL实现窗口函数》这篇文章
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行