2017-04-20 11 views
-1

ここに私の問題があります:for each for phpmyadminイベントの作成mysql

すべてのプレイヤーに1ポイントを与えるイベントを改善したいと思います。

素晴らしいことだが、私は20000などでプレイヤーは0ポイントと10000を持つプレイヤーを獲得するようproportionnallyそれをしたい式がすでに行われている0

でプレイヤーよりも50%少ないを獲得。

私は必要なのは、それぞれにあると私はphpMyAdminの中のイベントに慣れていないので、私はそれを行うことはできません。

[...]私は助けを必要とする部分です。

それは次のとおりです。

[FOR EACH ROW in player SET @id = playerid] 

     SET @points = SELECT points FROM player WHERE playerid = @id 
     IF (@points * 100/20000 > 100) 
     THEN 
      SET @earn = 0 
     ELSE 
      SET @pourcent = @points * 100/20000 
      SET @pourcentmanque = 100 - @pourcent 
      SET @earn = @pourcentmanque * 20/30 
     END 
     UPDATE player SET points = points + @earn WHERE playerid = @id 

[END FOR] 

は私を読んで支援しようといただきありがとうございます。

+0

私はこのためのループが必要であることを、あなたにも、更新中に 'case'式を使用することができるかわかりません。しかし、カーソルをチェックアウトしてください。 – Shadow

+0

ケース式? %ごとに? x)は、私は理解していない:/ 私が設立したが、すべての時間は、それが彼らのexemplesはphpmyadminのイベントシステムのために作られていない:( に失敗した、インターネット上のいくつかのexemplesで試してみました あなたが持っている場合。 phpmyadminイベントシステムで動作するカーソルの例です。私は喜んでそれを適応しようとします:) –

+0

下記の答えを参照してください。私たちはどちらも同じことを提案しました:ループなし、case式を持つただ1つの更新ステートメントカーソルの使用例を得るには、すばやくGoogle検索が役立ちます。 – Shadow

答えて

0

一度に多くの行にUPDATEを適用することができます。

シャドウからのコメントはcase式を使用して提案しました。これは見える方法です:

UPDATE player 
SET points = points + 
    CASE 
    WHEN points * 100/20000 > 100 
    THEN 0 
    ELSE (100 - (points * 100/2000)) * 20/30 
    END; 

特定のplayeridにはWHERE句がありません。これは、UPDATEがすべてのplayeridに適用されることを意味します。この式では、各プレーヤーの現在のpointsをどれだけ追加するかを指定します。

+0

ええ、私は正しいことなく、IDと、それは一人一人に数回xにポイントの一般的な量を与えるときと思った) ああありがとうあなたを –

0

私は単に任意のwhere句なしUPDATE文でcase式を使用し、あなたはこのためのループを必要とは思わない。私はまた、計算からいくつかの余分なゼロを削除

update players set points = points + (case 
             when points*1/200>100 then 0 
             else (100 - (points * 1/200)) * 2/3 
             end) 

+0

ありがとう!私はこのようないくつかのコマンドは、各プレーヤーに何度も何度も2000を与えたいと確信していましたx) –

+0

あなたの質問を解決したら、答えの1つを解答として受け入れてください。 – Shadow

+0

(「余分な」ゼロは、パラメータを変更する必要がある場合の特定の量と時間の変換です) 緑色のチェックオプションはまだ使用できませんでした。私が持っていたのは好きな星だった。私はタイトルを変更して誰もそれに答えられないように... 怒って私に悪い評判を与える必要はない:( –