J'essaye de METTRE À JOUR des valeurs d'une table mais j'ai besoin d'ajouter quelques conditions. J'ai trouvé la fonction CASE mais je ne le suis pas si c'est la meilleure méthode. Voici un exemple:
Ma table est par exemple 'relation'
id_utilisateur1 | id_utilisateur2 | nom1 | nom2
J'ai par exemple:
SELECT *
FROM realtion
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
Production:
4 | 3 | bill | jack
et je veux changer le nom de l'utilisateur 3 dans la relation entre 3 et 4 mais je ne sais pas s'il s'agit de l'ID utilisateur1 ou de l'ID utilisateur2.
J'ai pensé au cas
UPDATE relation
CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END
WHEN userid2 = 3 THEN SET name2 = 'jack' END
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
Mais ça ne marche pas! Des idées? Merci d'avance.
Malheureusement, ce que vous voulez obtenir au final n'est pas très clair, mais voici comment utiliser correctement SET
conditionnel dans votre UPDATE
UPDATE relation
SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END,
name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
Voici SQLFiddle démo.