2011-07-14 10 views
0

テーブルに入力された1つの数値に従って数値を加算したり減算したりします。UPDATE leftjoin SET +/- problem

は、ここに私のコードです:

$uratio = " 

    UPDATE teams 
LEFT JOIN games g1 ON (teams.ID = g1.op1ID) 

SET ratio = ratio 
    + IF(g1.op1gamescore = 1 , g1.op1score, g1.op1score) 
, ratio = ratio 
    - IF(g1.op1gamescore = 0, g1.op1score, g1.op1score) 

    WHERE g1.ID = '$_POST[id]' ; 

    "; 
     mysql_query($uratio) or die (mysql_error()); 


    $uratiob = " 

    UPDATE teams 
    LEFT JOIN games g2 ON (teams.ID = g2.op2ID) 
    SET ratio = ratio 
    + IF(g2.op2gamescore = 1, g2.op2score, g2.op2score) 
      , ratio = ratio 
    - IF(g2.op2gamescore = 0, g2.op2score, g2.op2score) 
    WHERE g2.ID = '$_POST[id]' ; 

    "; 
     mysql_query($uratiob) or die (mysql_error()); 

op2gamescore = 1、それは(負の符号)OP2と(マイナス記号)とOP2とOP1を置くが細かいですが、ないOP1

op1gamescore = 1の場合も同じです。

op1またはop2 = 0のときは、正しい計算を行います。しかし、それが当てはまるときではありません。

正しい計算はしますが、op1は常に負の符号で終わります。それはなぜですか?そのように実行する場合 - IFではなく+ IF ...任意のアイデア?

+0

あなたは理解していません。これは3つのパラメータを持ちます。最初は条件、2番目は条件が真であれば返る値、3番目は条件が偽であれば返す値です。条件が真か偽かにかかわらず同じ値を返すので、基本的にはスコアを加算し、条件に関係なく減算します。 –

+0

ok thnx、もう一度チェックしてください – GaboPlat

+0

本当にありがとうございます。それは今働いています。 – GaboPlat

答えて

0

クエリ1:

UPDATE 
    teams 
LEFT JOIN 
    games 
ON 
    teams.ID = games.op1ID 
SET 
    ratio = ratio + IF(games.op1gamescore = 1, games.op1score, -1 * games.op1score) 

クエリ2:どのように動作するかどうか

UPDATE 
    teams 
LEFT JOIN 
    games 
ON 
    teams.ID = games.op2ID 
SET 
    ratio = ratio + IF(games.op2gamescore = 1, games.op2score, -1 * games.op2score) 
+0

thnks!私は同じコードを使用しましたが、偽の条件を変更するのに(-1 *)を使用しました – GaboPlat

+0

しかし、各クエリで比率を2回設定する必要はありません。それをいくつか考えてみましょう。 –