2011-07-14 75 views
0

我希望根據表中輸入的一個數字來添加和減去數字。UPDATE leftjoin SET +/-問題

這裏是我的代碼:

$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它把OP1與(負號)和OP2與(負號)OP2是好的,但不OP1。

當op1gamescore = 1時,它會執行相同操作。

它確實在op1或op2 = 0時進行數學運算。但不是當它equlas 1.

它做了正確的數學,但OP1總是以負號結束,爲什麼呢?它就像它執行 - IF和NOT + IF ...任何想法?

+0

你不明白怎麼IF的作品。它有3個參數,第一個是條件,第二個是條件爲真時返回的值,第三個是條件爲假時返回的值。無論條件是真還是假,都會返回相同的值,因此基本上只是添加分數並將其減去,無論條件如何。 –

+0

好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

好,但沒有必要在每個查詢中設置比率兩次。考慮一下。 –