2011-07-14 2 views
0

Je veux que les nombres soient ajoutés et soustraits en fonction d'un nombre entré dans le tableau.MISE À JOUR leftjoin SET +/- problème

Voici mon code:

$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()); 

Lorsque op2gamescore = 1, il met OP1 avec (signe négatif) et op2 avec (signe négatif) op2 est bien, mais pas OP1.

Lorsque op1gamescore = 1, il fait de même.

Corrige les maths lorsque op1 ou op2 = 0. Mais pas quand il équalle 1.

Il fait le bon calcul mais op1 finit toujours par le signe négatif, pourquoi est-ce? C'est comme si elle s'exécute - SI et non + SI ... TOUTES IDÉES?

+0

Vous ne comprenez pas comment fonctionne SI. Il a 3 paramètres, le premier est la condition, le second est la valeur à retourner si la condition est vraie, le troisième est la valeur à retourner si la condition est fausse. Vous renvoyez la même valeur si la condition est vraie ou fausse, donc vous ajoutez simplement le score et le soustrayez indépendamment des conditions. –

+0

ok thnx, malade vérifier encore – GaboPlat

+0

MERCI BEAUCOUP. ÇA FONCTIONNE MAINTENANT. – GaboPlat

Répondre

0

requête 1:

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

requête 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! Je suis resté avec le même code mais j'ai utilisé le (-1 *) pour changer la fausse condition – GaboPlat

+0

OK, mais il n'est pas nécessaire de définir deux fois le ratio dans chaque requête. Pensez-y un peu. –