2011-06-28 2 views
1

Je veux mettre à jour le tableau 'tourneyteamsISF' les champs 'pointsfavor' et 'pointscontra' de la table 'tourneygamesISF' les champs 'op1score' et 'op2score' d'un certain ID.METTRE À JOUR la table en utilisant INNER JOIN - aide!

Par exemple:

Table name = tourneygamesISF 

op1(name of row) vs. op2 - op1score = 25 - op2score = 20 

Je veux mettre à jour ceci:

op1: (from: tourneygamesISF) = ID in tourneyteamsISF 

+ pointsfavor = 25 (to: tourneyteamsISF) 
+ pointscontra = 20 (to: tourneyteamsISF) 

op2: (from: tourneygamesISF) = ID in tourneyteamsISF 

+ pointsfavor = 20 (to: tourneyteamsISF) 
+ pointscontra = 25 (to: tourneyteamsISF) 

Je les suivantes jusqu'à présent

UPDATE tourneyteamsISF 
INNER JOIN tourneygamesISF g1 ON (tourneyteamsISF.ID = g1.op1) 
INNER JOIN tourneygamesISF g2 ON (tourneyteamsISF.ID = g2.op2) 
SET pointsfavor = pointsfavor 
    + IF(g1.op1score > g1.op2score, g1.op1score - g1.op2score, 0) 
    + IF(g2.op2score > g2.op1score, g2.op2score - g2.op1score, 0) 
, pointscontra = pointscontra 
    + IF(g1.op1score < g1.op2score, g1.op2score - g1.op1score, 0) 
    + IF(g2.op2score < g2.op1score, g2.op1score - g2.op2score, 0) 
WHERE ID = 1; 

Mais il donne l'erreur: Colonne « ID 'dans où la clause est ambigu

Mes tableaux sont comme ça:

TABLE tourneyteamsISF 
    ID integer autoincrement primary key, 
    name varchar, 
    pointsfavor integer, 
    pointscontra integer 

TABLE tourneygamesISF 
    ID integer autoincrement primary key, 
    op1 integer, 
    op2 integer, 
    op1score integer, /*score for team1*/ 
    op2score integer /*score for team2*/ 

Je sais qu'il doit faire quelque chose de nommer l'identifiant des équipes de table et des jeux, mais je suis coincé et confus. J'apprécierai toute l'aide que je peux obtenir.

Répondre

2

WHERE ID = 1; < - Voici votre problème. Ajoutez le nom de la table avant et il compilera sans aucun problème.

par ex. WHERE g1.ID = 1;

Cette erreur est INTERVENUES parce que SQL ne peut pas identifier ID colonne que vous souhaitez utiliser des tables de votre SELECT statment.

+0

d'abord all..thnx .... avec g1.ID il exécute mais il ne met pas à jour « pointsfavor » et « pointscontra » de ' tourneyteamsISF 'table ... donc il dit lignes affectées: 0 .... il doit y avoir un problème avec l'ID ... comment puis-je l'identifier? – fabio

+0

il dit encore affecté les lignes 0 ... je ne sais pas quel est le problème .... aider plz .... problèmes possibles sur l'insertion des entiers? ou sur la fonction? – fabio

1

il doit être comme ça - OÙ g1.ID = 1