[MySQL] inversion de colonnes
Résolu/Fermé
chmanu
Messages postés
166
Date d'inscription
mardi 15 mai 2001
Statut
Membre
Dernière intervention
3 septembre 2012
-
15 sept. 2004 à 10:39
kingfadhel Messages postés 1 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 28 janvier 2013 - 28 janv. 2013 à 09:41
kingfadhel Messages postés 1 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 28 janvier 2013 - 28 janv. 2013 à 09:41
A voir également:
- [MySQL] inversion de colonnes
- Word colonnes indépendantes - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Inverser deux colonnes excel - Guide
- Mysql community server - Télécharger - Bases de données
- Fusionner deux colonnes excel - Guide
8 réponses
Pour d'autres qui auraient le souci, voilà ce que j'ai fait :
-- ajout d'une colonne col_tmp, du même type que col1
-- swap des valeurs en utilisant col_tmp :
UPDATE ma_table SET col_tmp = col1, col1 = col2, col2 = col_tmp WHERE ...
-- suppression de la colonne col_tmp
-- ajout d'une colonne col_tmp, du même type que col1
-- swap des valeurs en utilisant col_tmp :
UPDATE ma_table SET col_tmp = col1, col1 = col2, col2 = col_tmp WHERE ...
-- suppression de la colonne col_tmp
JSS
Messages postés
3745
Date d'inscription
jeudi 22 avril 2004
Statut
Contributeur
Dernière intervention
17 décembre 2004
32
15 sept. 2004 à 10:44
15 sept. 2004 à 10:44
tu peux nommer les variables il me semble.
Bon courage !
Bon courage !
JSS
Le seul moyen que je connaisse c'est de modifier les valeurs directement. update "table" set "colonne" = "valeur" where "condition"; as tu beaucoup de valeurs a modifier?
http://majorinfo.ifrance.com
http://majorinfo.ifrance.com
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
15 sept. 2004 à 22:47
15 sept. 2004 à 22:47
Hello,
Quelques remarques:
l'INFORMATION contenue dans ta table ne dépend pas de l'ordre dans lequel tu as défini tes champs. Evidemment c'est gênant dans le cas où tu as des relations vers d'autres tables.
A toi de construire tes requêtes sans utiliser les jokers, de définir les foreign keys correctement.
Evidemment une table définie correctement au départ sera plus facile à manipuler par la suite.
Sinon tu peux utiliser ALTER TABLE pour renommer tes colonnes
http://dev.mysql.com/doc/mysql/en/ALTER_TABLE.html
exemple:
mysql> create table brol (f1 char(5), f2 char(5));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into brol values('abcde', 'edcba');
Query OK, 1 row affected (0.00 sec)
mysql> select * from brol;
+-------+-------+
| f1 | f2 |
+-------+-------+
| abcde | edcba |
+-------+-------+
1 row in set (0.01 sec)
mysql> alter table brol change column f1 tmp char(5);
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> alter table brol change column f2 f1 char(5);
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> alter table brol change column tmp f2 char(5);
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from brol;
+-------+-------+
| f2 | f1 |
+-------+-------+
| abcde | edcba |
+-------+-------+
1 row in set (0.00 sec)
Toutes variations possibles.
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Quelques remarques:
l'INFORMATION contenue dans ta table ne dépend pas de l'ordre dans lequel tu as défini tes champs. Evidemment c'est gênant dans le cas où tu as des relations vers d'autres tables.
A toi de construire tes requêtes sans utiliser les jokers, de définir les foreign keys correctement.
Evidemment une table définie correctement au départ sera plus facile à manipuler par la suite.
Sinon tu peux utiliser ALTER TABLE pour renommer tes colonnes
http://dev.mysql.com/doc/mysql/en/ALTER_TABLE.html
exemple:
mysql> create table brol (f1 char(5), f2 char(5));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into brol values('abcde', 'edcba');
Query OK, 1 row affected (0.00 sec)
mysql> select * from brol;
+-------+-------+
| f1 | f2 |
+-------+-------+
| abcde | edcba |
+-------+-------+
1 row in set (0.01 sec)
mysql> alter table brol change column f1 tmp char(5);
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> alter table brol change column f2 f1 char(5);
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> alter table brol change column tmp f2 char(5);
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from brol;
+-------+-------+
| f2 | f1 |
+-------+-------+
| abcde | edcba |
+-------+-------+
1 row in set (0.00 sec)
Toutes variations possibles.
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
chmanu
Messages postés
166
Date d'inscription
mardi 15 mai 2001
Statut
Membre
Dernière intervention
3 septembre 2012
28
20 sept. 2004 à 13:56
20 sept. 2004 à 13:56
En fait, la base à été correctement concu, seulement, l'apppli derriere a inversé les deux champs. et moi, j ai également rempli certains champs "à la main" avec un client SQL. donc parmi les données, certaines (les deux tiers environ, sur 300) sont inversée.
Le alter table agit uniquement sur la table. Je voudrais que cela agisse sur les données (d'ou le where <condition>).
Merci pour vos réponses en tout cas.
Chmanu
Le alter table agit uniquement sur la table. Je voudrais que cela agisse sur les données (d'ou le where <condition>).
Merci pour vos réponses en tout cas.
Chmanu
ca te fais a peu pres 200 valeurs a modifier ! puisque tu programme, tu pourrai faire un petit programme qui prend les valeurs du champ 2 a partir d'un certains n° de clé primaire puis les copie dans le champs 1. Ca devrais pas être trop long.
chmanu
Messages postés
166
Date d'inscription
mardi 15 mai 2001
Statut
Membre
Dernière intervention
3 septembre 2012
28
20 sept. 2004 à 15:14
20 sept. 2004 à 15:14
oui, je peux. Et c'est vrai que ca ne sera pas trop long.
Pour l'instant, ce n est pas urgent. mais si en une requete ca avait été possible, j aurai préféré.
Mais apparemment non, donc je vais faire comme je l annonçais : je vais passer par une table intermédiaire.
Chmanu
Pour l'instant, ce n est pas urgent. mais si en une requete ca avait été possible, j aurai préféré.
Mais apparemment non, donc je vais faire comme je l annonçais : je vais passer par une table intermédiaire.
Chmanu
kingfadhel
Messages postés
1
Date d'inscription
mercredi 11 novembre 2009
Statut
Membre
Dernière intervention
28 janvier 2013
28 janv. 2013 à 09:41
28 janv. 2013 à 09:41
Solution testée :
Pour inverser le contenu de deux colonnes de la même table voici la requête :
Exemple nous voulons inverser le contenu des deux colonnes "nom" et "email" de la tables utilisateurs,
UPDATE utilisateurs SET 'nom'=@tmp:='nom', 'nom'='email', 'email'=@tmp;
Pour inverser le contenu de deux colonnes de la même table voici la requête :
Exemple nous voulons inverser le contenu des deux colonnes "nom" et "email" de la tables utilisateurs,
UPDATE utilisateurs SET 'nom'=@tmp:='nom', 'nom'='email', 'email'=@tmp;