28-12-2006, 10:22 PM
J'ai fini par trouver
Je ne dis pas que c'est la meilleure solution mais elle marche (chez moi).
Le problème se trouvait au niveau des CASE.
Pour l'alias, cela ne posait pas de problèmes avec ta première requête et cela n'en pose toujours pas.
Voici le code assez long :
Je ne dis pas que c'est la meilleure solution mais elle marche (chez moi).
Le problème se trouvait au niveau des CASE.
Pour l'alias, cela ne posait pas de problèmes avec ta première requête et cela n'en pose toujours pas.
Voici le code assez long :
Code :
UPDATE table_perso AS p, table_carte AS c
SET p.x =
CASE
WHEN(p.pm - CASE
WHEN c.type = 1 THEN 1
WHEN c.type = 2 THEN 1
WHEN c.type = 3 THEN 2
WHEN c.type = 4 THEN 3
END) >0
THEN
p.x + 1
ELSE
p.x
END,
p.y = CASE
WHEN(p.pm - CASE
WHEN c.type = 1 THEN 1
WHEN c.type = 2 THEN 1
WHEN c.type = 3 THEN 2
WHEN c.type = 4 THEN 3
END) >0
THEN
p.y + 1
ELSE
p.y
END,
p.pm = CASE
WHEN(p.pm - CASE
WHEN c.type = 1 THEN 1
WHEN c.type = 2 THEN 1
WHEN c.type = 3 THEN 2
WHEN c.type = 4 THEN 3
END) > 0
THEN (p.pm - CASE
WHEN c.type = 1 THEN 1
WHEN c.type = 2 THEN 1
WHEN c.type = 3 THEN 2
WHEN c.type = 4 THEN 3
END)
ELSE
p.pm
END
WHERE p.id = 2 AND c.x = p.x AND c.y = p.y