線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1186
推到 Plurk!
推到 Facebook!

把Table2的資料合計後去更新Table1中的欄位,SQL如何下???

尚未結案
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-01 15:11:05 IP:61.218.xxx.xxx 未訂閱
各位前輩請教一下: 把Table2的資料合計後去更新Table1中的欄位,SQL如何下??? 分兩次Query做法如下: 1:Query2 SELECT Table2.憑證單號, Sum(Table2.沖帳金額) AS 沖帳金額合計 FROM Table2 GROUP BY Table2.憑證單號; 2: UPDATE Table1 LEFT JOIN Query2 ON Table1.銷貨單號 = Query2.憑證單號 SET Table1.己收金額 = Query2.沖帳金額合計; 但如果合成一個SQL要如何做??用access 非常非常的謝謝你,因為有你這世界變的更美好 ☆ ^_^ ☆ °∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒ ﹒‧°∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒﹒‧°∴°﹒☆°.
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-01 16:59:54 IP:61.216.xxx.xxx 未訂閱
如果你的 憑證單號及沖帳金額合計在Form上面已經有欄位值了, 那UPDATE語法是這樣 update Table1 set 己收金額 = 沖帳金額合計 where 銷貨單號 = 憑證單號 TRY TRY SEE 發表人 - chih 於 2003/03/01 17:07:41
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-01 17:47:10 IP:61.218.xxx.xxx 未訂閱
引言: 如果你的 憑證單號及沖帳金額合計在Form上面已經有欄位值了, 那UPDATE語法是這樣 update Table1 set 己收金額 = 沖帳金額合計 where 銷貨單號 = 憑證單號 TRY TRY SEE 發表人 - chih 於 2003/03/01 17:07:41
chih 前輩謝謝你的回覆: 但我要的要一次多筆更新如 2002/01/01 ~ 2002/01/31且在Form上沒有欄位 我有試過以下兩種子查詢的方式,但都無法更新?? 1. UPDATE stDeliveryMaster LEFT JOIN [SELECT stAccReceivableDetail.憑證單號, Sum(stAccReceivableDetail.沖帳金額) AS 沖帳金額合計 FROM stAccReceivableDetail GROUP BY stAccReceivableDetail.沖帳類别, stAccReceivableDetail.憑證單號 ]. AS Table1 ON stDeliveryMaster.銷貨單號 = Table1.憑證單號 SET stDeliveryMaster.己收金額 = Table1.[沖帳金額合計]; 2. UPDATE stDeliveryMaster SET stDeliveryMaster.己收金額 = (Select [沖帳金額合計] from (SELECT stAccReceivableDetail.憑證單號, Sum(stAccReceivableDetail.沖帳金額) AS 沖帳金額合計 FROM stAccReceivableDetail GROUP BY stAccReceivableDetail.憑證單號 ) as Table1 Where stDeliveryMaster.銷貨單號=Table1.憑證單號); 以上如改為 Select 都可以使用,但改為UPDATE更新時會產生"運作必須使用更新查詢"?? 不知是否為Access的問題?還是標準的SQL語法不能這樣下?? 如不行的話,能否請前輩教導其它作法???
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-01 19:20:34 IP:61.216.xxx.xxx 未訂閱
UPDATE語法是這樣 update Table1 set 己收金額 = 沖帳金額合計 //沖帳金額合計無法在子查詢取得 where 銷貨單號 = (SELECT Table1.銷貨單號 FROM Table1, (SELECT 憑證單號, Sum(沖帳金額) AS 沖帳金額合計 FROM Table2 GROUP BY 憑證單號) AS B WHERE Table1.銷貨單號=Table2.憑證單號) 我TRY 了一下..這各可能要用2各SQL才能做了.. 所以可能還是要用二段來做了... 用2002/01/01 ~ 2002/01/31作為回圈取得 SELECT 憑證單號, Sum(沖帳金額) AS 沖帳金額合計 FROM Table2 WHERE 日期 BETWEEN 2002/01/01 AND 2002/01/31 GROUP BY 憑證單號 然後再利用第二各SQL update Table1 set 己收金額 = Query1.沖帳金額合計 where 銷貨單號 = Query1.憑證單號 ^^ TRY TRY SEE.. 發表人 - chih 於 2003/03/01 19:22:26
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-02 11:49:56 IP:61.70.xxx.xxx 未訂閱
引言: UPDATE語法是這樣 update Table1 set 己收金額 = 沖帳金額合計 //沖帳金額合計無法在子查詢取得 where 銷貨單號 = (SELECT Table1.銷貨單號 FROM Table1, (SELECT 憑證單號, Sum(沖帳金額) AS 沖帳金額合計 FROM Table2 GROUP BY 憑證單號) AS B WHERE Table1.銷貨單號=Table2.憑證單號) 我TRY 了一下..這各可能要用2各SQL才能做了.. 所以可能還是要用二段來做了... 用2002/01/01 ~ 2002/01/31作為回圈取得 SELECT 憑證單號, Sum(沖帳金額) AS 沖帳金額合計 FROM Table2 WHERE 日期 BETWEEN 2002/01/01 AND 2002/01/31 GROUP BY 憑證單號 然後再利用第二各SQL update Table1 set 己收金額 = Query1.沖帳金額合計 where 銷貨單號 = Query1.憑證單號 ^^ TRY TRY SEE.. 發表人 - chih 於 2003/03/01 19:22:26
謝謝chih 前輩這麼熱心的幫忙測試!! 如你所說那可真的要用兩個Query再加上程式回圈才能做了 query1(Select) Code(For Next) Query2(Updata) 這方法是確定可行 但我原本是想如可以用一個Query完成的話,就可以少寫很多程式及好管理 那我就要考慮用其它方法了: 目前己知做法如下: 1.如chih 前輩所說用Query再加上程式回圈來更新資料 2.用暫存Table來做,這部份有試過是可以,但我是用Access資料庫 如重算多次檔案會加大且易損壞,又要常壓縮資料庫 我來想看用那種方法好了 謝謝chih 前輩
系統時間:2024-07-04 0:40:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!