私はMysQLを使用しています。テーブルはabilities
となっています。各行は、プレーヤーが所有するユニークな機能です。各行は、データを保持している:MYSQLアイテム取引
{
uuid (unique id of owner of the ability),
ability_uuid (unique id of ability itself),
ability_id (type of ability)
}
プレイヤーは他のプレイヤーと能力を取引し、私はそれは、彼らがすべて1つのクエリでは、と取引しているプレイヤーに能力の持ち主uuid
を更新したいです。
UPDATE abilities AS abilities1
INNER JOIN abilities AS abilities2 ON
(abilities1.uuid = 'player1_uuid' AND abilities2.uuid = 'player2_uuid')
SET
abilities1.uuid = abilities2.uuid,
abilities2.uuid = abilities1.uuid
;
これは動作し、プレイヤーは他のプレイヤーと所有していることをすべての能力を交換します:ここに は、私が持っているものです。問題は、プレイヤーが能力のうちの1つの所有権を失ったとしましょう、取引はまだ取引されているもの以外のすべての能力を処理します。
ので、例えば、そのability3
とability4
ためplayer2でplayer1取引ability1
とability2
あれば、それはplayer1は、もはや何らかの理由ability1
を所有していることが判明していない、それはまだability3
とability4
ためability2
を交換しますので、player2を取得しますねじ止め。
私はこれを修正して、MySQLがサーバが彼らが考える能力を所有していることをチェックする方法を教えてください。
編集あなたの質問とは前に、サンプルデータを提供し、後にどのような成功した貿易のための失敗した取引がどのように見えるかのように見える。 –