0
4つのテーブルの関係に依存するUPDATEコマンドとUPDATEコマンドについて助けを求めます。 (あるいは、それも可能です4つのテーブルでMySQL SUMを更新する
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)
は、今私はUPDATEスクリプトを実行する必要があり、文字はのインスタンスを持っている場合、template_items.itemLevelの和としてtotalItemLevelを設定することその項目は、擬似声明でスロット> 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