有兩個表,coating_out(發出表),coating_in(收入表),如圖:


兩個表中有一個共同的欄位coatoutno,coatingout表中coatoutno是唯一的,coatingin(收入)表中coatoutno有重復的,現在需要在coatingin(收入)表中根據coatoutno的號碼,把coatinqty(收入數量)列的數量相加,再用coatingout(發出)表中coatoutqty(發出數量)減去coatinqty的和,求出結果放在balance(余數)列中。
自己寫的SQL陳述句如下:

運行結果應該是10000,實際是60000,如下圖:

哪位大神看下錯誤在哪里?如何解決?謝謝!
uj5u.com熱心網友回復:
先GROUP SUM兩表分別,然后再JOINuj5u.com熱心網友回復:
版主你好!剛學mysql,具體要怎么寫?能否寫出來?謝謝!
uj5u.com熱心網友回復:
select c.coatoutqty-b.coatinqtysum balance from coating_out c ,(select a.*,sum(coatinqty) coatinqtysum from coating_in a group by a.coatoutno) b where c.coatoutno =b.coatoutno
uj5u.com熱心網友回復:
select a.coatoutqty-b.sumcoatinqty balance from coating_out a ,(select coatoutno,sum(coatinqty) sumcoatinqty
from coating_in
group by coatoutno) b
where a.coatoutno =b.coatoutno
你運行的結果不對,是SQL語問因為產生笛卡爾積了,計算的是產生笛卡爾積結果集后的值。
3樓寫的SQL陳述句是對的,但不太嚴謹。
uj5u.com熱心網友回復:
這個結果對了,但是寫到PHP代碼中在網頁中運行就不行了,網頁代碼懂嗎?怎么寫?
uj5u.com熱心網友回復:
不好意思,代碼之類的就不懂了
uj5u.com熱心網友回復:
select c.coatoutqty-b.coatinqtysum balance from coating_out c ,(select a.*,sum(coatinqty) coatinqtysum from coating_in a group by a.coatoutno) b where c.coatoutno =b.coatoutno
uj5u.com熱心網友回復:
可以使用視窗函式,參考《如何協助MySQL實作視窗函式》這篇文章轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/75219.html
標籤:MySQL
上一篇:多表多表聯接查詢,求大牛優化
下一篇:mysql獲取時間
