2012-07-30 76 views
0

我有2個表1. paypal_ipn_orders表2查找。查找表我有我的所有項目與列名稱項目列表我也有另一列標籤sort_id這是一個8位數字號碼內部用於我的所有項目。表1 paypal_ipn_orders接收訂單並有幾列,但只有少數對這個問題很重要。 id,payer_email,item_name,sort_num和payment_status。我需要做的是,當訂單進入paypal_ipn_orders表時,我需要交叉引用查找表,並在項目名稱匹配時將8位數字分配到標記爲sort_num的列中。選擇2個表複製記錄匹配時的唯一編號

table: paypal_ipn_orders 
id  payer_email   item_name  sort_num    payment_status 
1  [email protected]  batman card  NULL     completed 
2  [email protected]  superman card NULL     completed 
3  [email protected]  spiderman card NULL     completed 
4  [email protected]  captain america NULL     completed 

這裏是樣本查找表

table: lookup 
item     sort_id 
batman card   12345678 
superman card   12345677 
spiderman card   12345676 
captain america  12345675 

我想要輸出的樣子後,我運行查詢。

table: paypal_ipn_orders 
id  payer_email   item_name  sort_num    payment_status 
1  [email protected]  batman card  12345678    completed 
2  [email protected]  superman card 12345677    completed 
3  [email protected]  spiderman card 12345676    completed 
4  [email protected]  captain america 12345675    completed 

我知道這個心不是完全正確的語法,但你會得到的想法

SELECT lookup.sort_id 
INSERT INTO paypal_ipn_orders.sort_num 
WHERE lookup.item = paypal_ipn_orders.item_name 

回答

1

您需要使用UPDATE,不INSERT

UPDATE paypal_ipn_orders 
SET sort_num = (SELECT sort_num 
       FROM lookup 
       WHERE lookup.item = paypal_ipn_orders.item_name) 

兩個邊筆記,但:

  1. 這樣做會更新整個表格。插入時觸發器最好做到這一點。

  2. 如果sort_num將始終取決於您的lookup表中的值,我不知道將sort_num存儲兩次的好處。如果您嘗試在插入時保存該值,或者可以手動更改它,那麼這是有道理的。 (也就是說,如果你更改lookupsort_num,但你要保持原來的值paypal_ipn_orders。)

+0

在查找表中的排序ID也時有變化的時候,訂單隻得到一旦印刷就拉掉,然後掉下來,這就是爲什麼我選擇走這條路。我很感激我會嘗試。 – user1542036 2012-07-30 04:12:09