主副表更新的sql寫法 |
尚未結案
|
JamesLiang
初階會員 發表:54 回覆:78 積分:31 註冊:2003-02-13 發送簡訊給我 |
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 請教先進..我想寫個SQL他的功能是將副表中符合條件的紀錄中的重量欄位加總 後存入主表的欄位內,但是出現錯誤,sql如下 update master set master.totalwt = (select sum(weight) from detail inner join master on master.code = detail.code where detail = 'F') 多謝您的SQL語法怪怪的,剛剛看一下SQL Server Book OnLine,這樣下看看: Update Master Set Totalwt = (Select Sum(Weight) From Detail D Where M.Code = D.Code and D.xxx(這個欄位名稱您沒有寫出來)='F') From Master M, Detail D註:這是MS SQL Server的語法 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Update Master Set Totalwt = (Select Sum(Weight) From Detail D Where M.Code = D.Code and D.xxx(這個欄位名稱您沒有寫出來)='F') From Master M, Detail D這段 channel 寫得可以工作, 但原理有一點點問題, 稍微修正一下.. Update Master Set Totalwt = (Select Sum(Weight) From Detail D Where M.Code = D.Code and D.xxx(這個欄位名稱您沒有寫出來)='F') From Master M原理是因為 外面的 from 資料集並不含 detail table, 在裡面的資料集中已含有了 detail 的 from 子句, 原理上是一個子查詢, 並非是聯合 master 及 detail 的資料集. 這是複合子查詢的語法, 看起來會比較難理解, 底下我再寫一個比較容易看得懂的 先看理論值的 totalwt 應該如何產生: select m.code, sum(d.weight) as sum_weight from master m, detail d where m.code = d.code and d.xxxx = 'F' group by m.code這是算出應該的 totalwt 值, 接下來我們將這個查詢當作一個結果資料集和原來的 master 利用 code = code 的對應方式, 再來下 update sql 會比較容易些, 如下: update master set totalwt = b.sum_weight from master m, (select m.code, sum(d.weight) as sum_weight from master m, detail d where m.code = d.code and d.xxxx = 'F' group by m.code) b where m.code = b.code這樣一來就是 master 與 b 資料集利用 m.code=b.code 的方式對應, 將結果 update 回 master, 是不是比較好想... 所以更新資料的 update 語法用這種方式是比較容易寫出 command 的哦~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |