0
我想請求幫助和UPDATE命令,這取決於4個表的關係。 (或者甚至有可能MySQL SUM更新4個表
theese是我的表:?
Characters
guid, ...., totalItemlevel
template_items
id, ... itemlevel, ...,
instances_item
itemInstanceID, itemID, Owner
(itemID is foreign key template_items.id, Owner is foreign key Character.guid)
inventory_character
guid, slot, iteminstance
(guid is foreign key character.guid, item is foreign key instances_item.itemInstanceID)
現在我需要做一個更新腳本,將設置totalItemLevel爲template_items.itemLevel的總和,如果角色有實例在插槽的庫存該項目> 20
在僞聲明:
UPDATE characters
SET totalItemLevel = SUM(FOR EACH ITEM IN INVENTORY(is slot>20?(GET its template(get itemLevel))));
所以我想這樣的事情
SELECT SUM(template_items.itemLevel)
FROM template_items,
inventory_character,
instances_item,
characters
WHERE chararacter.guid = inventory_character.guid
AND inventory_character.slot > 19
AND inventory_character.iteminstance = instances_item.itemInstanceID
AND instances_item.itemID = template_items.id);
這絕對不行,它很瘋狂,它可能需要一些子查詢,但我真的不知道,如何實現這一點。
此外,我不能以其他方式做到這一點,就像在PHP中做一些查詢然後計算它一樣......我需要直接在數據庫中執行此更新。
那麼請你有什麼想法,如何實現這個計算列?
感謝提前:)
它通常是一個壞主意存儲計算值(來自其他列)。請改爲創建一個視圖。 – jarlh
一般來說,同樣的問題,我需要至少每個字符的SELECT值。所以,如果它是一個視圖,它將agan Characters.name和GS值作爲一個新表(視圖)從此,我可以做更新 – Zorak