この特定のエラーメッセージに関するいくつかの質問を見ましたが、私の問題に一致するものは見つかりませんでした。
私の問題の簡単な説明。
いくつかのゲームの結果を含むテーブルがあります。
誰かが不在の場合、前のゲームのこの人の平均をゲーム結果として保存し、プロパティf_presentを0に設定します。
その部分については問題ありません。
古いゲームを変更すると問題が発生します。新しい値(彼がいないゲームのそのプレーヤーの新しい平均)を保存するために、誰かがいない次のすべてのゲームを更新する必要があります。
クエリは実行できますが、「FROMテーブルで更新対象のテーブルを指定できません」というエラーメッセージが表示されたため、更新できません。
これが私のクエリです(これは機能します)
select t1.f_subgame_id,
t1.F_PLAYER_ID,
(SELECT avg(t2.f_result)
from t_subgames_results t2
join t_subgames t2s on t2s.f_subgame_id = t2.f_subgame_id
join t_seasons_games t2ss on t2ss.f_game_id = t2s.f_game_id
where F_RESULT > -1
and F_PLAYER_ID = t1.F_PLAYER_ID
and t2ss.F_SEASON_ID = t1ss.F_SEASON_ID
and t2ss.F_DATE < t1ss.F_DATE
)
from t_subgames_results t1
join t_subgames t1s on t1s.f_subgame_id = t1.f_subgame_id
join t_seasons_games t1ss on t1ss.f_game_id = t1s.f_game_id
where t1ss.f_date>'2012-09-07' and t1.F_PRESENT = 0;
これが私の更新の試みです:
update t_subgames_results t1
join t_subgames t1s on t1s.f_subgame_id = t1.f_subgame_id
join t_seasons_games t1ss on t1ss.f_game_id = t1s.f_game_id
set f_result =
(SELECT avg(t2.f_result) as result
from t_subgames_results t2
join t_subgames t2s on t2s.f_subgame_id = t2.f_subgame_id
join t_seasons_games t2ss on t2ss.f_game_id = t2s.f_game_id
where F_RESULT > -1
and F_PLAYER_ID = t1.F_PLAYER_ID
and t2ss.F_SEASON_ID = t1ss.F_SEASON_ID
and t2ss.F_DATE < t1ss.F_DATE
)
where t1ss.f_date>'2012-09-07' and t1.F_PRESENT = 0;
繰り返しになりますが、この問題についていくつかのトピックがあることは知っていますが、私の問題に関連するトピックを見つけることができないようです...
私を助けてくれてありがとう!