A voir également:
- [SQL] Inverser un champ
- Inverser ecran pc - Guide
- Récupération serveur sql - Télécharger - Gestion de données
- Inverser deux colonnes excel - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
- Inverser touche fn ✓ - Forum Windows 7
1 réponse
GallyNet
Messages postés
434
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
15 décembre 2008
386
23 nov. 2005 à 17:18
23 nov. 2005 à 17:18
Est-ce que tu peut rajouter une valeur a ton enum ? Si oui tu lui rjoute 2 et tu fais :
UPDATE maTable SET champ=2 WHERE champ=0; UPDATE maTable SET champ=0 WHERE champ=1; UPDATE maTable SET champ=1 WHERE champ=2;
6 janv. 2009 à 17:48
Plutôt que d'utiliser un champ ENUM('0', '1') pour gérer les cas true/false avec MySQL, j'utilise un champ de type TINYINT(1) dans lequel j'envoie soit 0, soit 1.
Pour la mise à jour de la table, par exemple pour définir si un utilisateur est à l'état "accepté" ou à l'état "non accepté", j'utilise les fonctions MOD(n,m) (fonction modulo) et ABS(x) (fonction absolu) :
UPDATE user_tb SET user_estAccepte = ABS(MOD(user_estAccepte, 2) - 1) WHERE user_id = 1 OR user_id=3 OR user_id = 15;
En effet, ABS(MOD(0,2) - 1) = 1 et ABS(MOD(1,2) - 1) = 0 : on obtient "l'inverse binaire".
Si l'utilsateur 3 est accepté, il passe à l'état "non accepté" et si l'utilisateur 15 est non accepté, il passe à l'état "accepté" ... le tout dans une seule et même requête.
Bon MySQL.
6 janv. 2009 à 17:56
UPDATE user_tb SET user_estAccepte = ABS(user_estAccepte - 1) WHERE user_id = 1 OR user_id=3 OR user_id = 15;
En effet, ABS(0 - 1) = 1 et ABS(1 - 1) = 0 : on obtient "l'inverse binaire".
29 févr. 2012 à 12:34
L'idée proposée par Login Art n'est pas mauvaise, mais même sa version simplifiée peut encore être améliorée : il est possible de faire cela sans utiliser la moindre fonction SQL, simplement en inversant l'opération. Voyez plutôt :
UPDATE user_tb SET user_estAccepte = (1 - user_estAccepte) WHERE [...]
En effet, 1 - 1 = 0 et 1 - 0 = 1. Il suffisait d'y penser... ;)