2010-11-23 143 views
2

我需要一些幫助,這個MySQL更新MySQL更新查詢

我有三個表如下。

tbl1 
id eid quantity 
1 3  2 
2 4  3 

tbl2 
tid eid qnty status type 
1 3 1  1   1 
2 3 0  1   0 
3 4 1  1   1 
4 4 0  1   0 

tbl3 
id tid type 
1 1 1 
2 2 0 
3 3 1 
4 4 0 

我需要一個SQL更新:

查找X

查找Ÿ

然後在tbl2的更新狀態爲0,如果X - Y> 0

X = TBL1 .quantity - sum(tbl2.qnty)where tbl1.eid = tbl2.eid AND type = 1

換句話說:

X = tbl1.quantity在於EID - 總和(tbl2.qnty)在EID WHERE類型= 1

因此,X爲EID 4 = 2和X爲EID 3 = 1

Y = SELECT COUNT(tbl3.id)FROM TBL3 WHERE tbl2.tid = tbl3.tid AND型= 0 GROUP BY TID

因此TID 2 = 1和TID在tble2如果4 = 1

更新後的狀態0 X - Y> 0

最終結果將是tbl2.tid:4的狀態將更新爲0,因爲2 - 1 = 1

您讚賞(s)。

+1

已從別處獲得幫助,並且這是腳本:update tbl2 set status = 0 where type = 0 AND eid in (select distinct EID從 ( 選擇A.eid,X,Y 從 ( SELECT tbl1.eid,(tbl1.quantity - 總和(tbl2.qnty))AS X FROM TBL1,TBL2 WHERE tbl1.eid = TBL2。 EID AND TYPE = 1 GROUP BY tbl1.eid ),爲 JOIN ( SELECT COUNT(tbl3.id)AS Y,tbl2.eid FROM TBL2,TBL3 WHERE tbl2.tid = tbl3.tid AND tbl2.type = 0 GROUP BY tbl2.tid )as B ON A.eid = B.eid HAVING X - Y> 0 )as C ); – 2010-11-25 10:55:09

回答

0

我現在不能檢查它,所以我不是100%肯定的語法,但我認爲你可以做這樣的事情:

更新tbl2的 上加入TBL1 tbl1.eid = tbl2的.eid 上tbl2.tid = TBL3 設置狀態加入TBL3 = 0 其中tbl2.type = 1個 tbl1.quantity - 總和(tbl2.qnty) - (SELECT COUNT(tbl3.id)FROM TBL3 WHERE tbl2.tid = tbl3.tid AND type = 0 GROUP BY tid)> 0

+0

感謝Rivka的輸入。得到了:#1111 - 組功能的無效使用。任何想法? – 2010-11-23 20:24:59