2011-03-04 61 views
0

我有兩個表。一個是包含數量信息,並具有以下結構更新表使用總和

> mysql> DESCRIBE summary_finished; 
+---------------+---------------+------+-----+---------+ 
| Field   | Type   | Null | Key | Default | 
+---------------+---------------+------+-----+---------+ 
| db_id   | int(11)  | NO | PRI | NULL | 
| finished_id | text   | NO |  | NULL | 
| finished_name | text   | NO |  | NULL | 
| qoh   | int(11)  | NO |  | NULL | 
| value   | decimal(10,2) | NO |  | NULL |     
+---------------+---------------+------+-----+---------+ 


    mysql> DESCRIBE detail_finished; 
    +-------------+---------------+------+-----+---------+ 
    | Field  | Type   | Null | Key | Default | 
    +-------------+---------------+------+-----+---------+ 
    | db_id  | int(11)  | NO | PRI | NULL | 
    | finished_id | text   | NO |  | NULL | 
    | quantity | int(11)  | NO |  | NULL | 
    | value  | decimal(10,2) | NO |  | NULL | 
    +-------------+---------------+------+-----+---------+ 

在detail_finished存在具有相同finished_id許多項的詳細信息表。我試圖完成的是將具有相同finished_id的項目組合起來,並將該總和更新到summary_finished.qoh字段。這是我到目前爲止有:

function set_qty($total, $finished_id){ 
    global $connection; 
    $query="UPDATE summary_finished 
    SET qoh={$total} 
    WHERE finished_id='$finished_id'"; 
    $quantity=mysql_query($query, $connection); 
    confirm_query($quantity); 
    } 


$query="SELECT finished_id, SUM(quantity) FROM detail_finished GROUP BY finished_id"; 
$result=mysql_query($query, $connection) or die(mysql_error()); 

while($row = mysql_fetch_array($result)){ 
    set_qty($row['SUM(quantity)'], $row['finished_id']); 
    } 

我知道的款項都正確計算,我可以附和他們直出,但我不能讓我的表進行更新。原諒我的sl code代碼我完全用mysql很新。預先感謝您的幫助。

回答

1

我不知道你爲什麼使用文本類型來存儲id。順便說一下

update summary_finished as sf 
inner join (
select finished_id, 
     sum(quantity) as total 
from detail_finished 
group by finished_id)as t 
set sf.qoh = t.total 
where sf.finished_id = t.finished_id 
+0

這是給我不正確的數字。約3000關。我有文本類型ID,因爲這是在我們的主庫存系統中使用的ID。示例ID是M70951BLA。這可能是我的問題在哪裏?在我開始嘗試使用sum之前,您的查詢顯示了我的方式過於複雜的腳本的確切數字。 – Rich 2011-03-04 19:35:14

+0

如果您的代碼與M70951BLA類似,則可以使用varchar類型。文字不是必需的。你的意思是不正確的數字是什麼?你能舉一些例子嗎?我試過我的查詢,結果是正確的。 – 2011-03-04 19:51:24

+0

如果我轉儲finished_detail和finished_summary數量和qoh的總數都應匹配。但他們沒有。將類型更改爲varchar並重新運行 – Rich 2011-03-04 19:57:31