把Table2的資料合計後去更新Table1中的欄位,SQL如何下??? |
尚未結案
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
各位前輩請教一下:
把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 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言: 如果你的 憑證單號及沖帳金額合計在Form上面已經有欄位值了, 那UPDATE語法是這樣 update Table1 set 己收金額 = 沖帳金額合計 where 銷貨單號 = 憑證單號 TRY TRY SEE 發表人 - chih 於 2003/03/01 17:07:41chih 前輩謝謝你的回覆: 但我要的要一次多筆更新如 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 發送簡訊給我 |
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 發送簡訊給我 |
引言: 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 前輩 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |