Probleme requete UPDATE

corsichris -  
 corsichris -
Bonjour,

Je voudrais mettre à jour , tous les colonnes d'une table directement sur phpmyadmin.
cependant il y plus de 5000 articles à mettre à jour.
c'est une table ' pss_product ' , avec son champs 'active' et je voudrais modifier que la valeur du champs 'active' de tous les enregistrements .

j'ai essayé

UPDATE `pss_product` SET `active` VALUES
(1),
(1),
(1),
(1),
(0),
(1),
(1),
(1),
(1),
(1),
(1)
....
(1);


mais cela me renvoi un message d'erreur sur la requete,
merci de votre aide
            
            
A voir également:

10 réponses

Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Bonjour,

Tu veux y écrire quoi?
Tu écris en brut dans ta base? Pas de vue/code derrière?
0
corsichris
 
bien je voudrais modifier le numero du champs 'active'
par de nouvelles valeurs

UPDATE `pss_product` SET `active` VALUES
(1),
(1),
(1),
(1),
(0),
(1),
(1),
(1),
(1),
(1),
(1)
....
(1);
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Combien y a-t-il de 0 et combien de 1?
0
corsichris
 
actuellement il n'y a que des 1
et je voudrais modifier avec les nouvelles valeurs que j'ai recuperé de l'ancien base, il y a plus de 5000 produits,
je voulais savoir comment proceder car

UPDATE `pss_product` SET `active` VALUES
(1),
(1),
(1),
(1),
(0),
(1),
(1),
(1),
(1),
(1),
(1)
+ les 5000 autres
(1);

ne fonctionnent pas
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Tu n'as pas compris comment te servir de la fonction update.
Il ne faut l'utiliser que quand une valeur du champ est à changer. Si tu avais 1 et que tu écris 1 ça ne sert à rien. Il faut que tu fasse ton update uniquement sur les 0 en fonction de l'id.
0
corsichris > Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention  
 
oui je sais que çà ne sert à rien,
mais comme il y a plus de 5000 produits , cela serait trop fastidieux et tres longs de tout mettre à jour,

y a t il pas ce genre de solution de modifier tous l'ensemble d'un coup meme si certaines ne vont pas changer.?
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Si les séquences ne se répètent pas non. C'est pour ça qu'on écrit jamais en dur sur une base, on passe toujours par une vue+ code.
0
corsichris
 
comment je pourrais proceder alors?
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Ba je t'ai posé une question au tout début, j'attends toujours ma réponse.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
corsichris
 
vider le champs 'active' et faire un insert?
0
corsichris
 
pardon laquelle de question?
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Tu écris en brut dans ta base? Pas de vue/code derrière?
0
corsichris
 
ah oui j'ecrit en brut sur la base, c'est une site de vente prestashop que j'ai migrer de oscommerce, et je voulais modifier les valeurs de ce champs 'active'
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Donc si tu n'as pas l'intention d'automatiser via un code, tu n'as pas d'autre choix que d'écrire à la main( pas toutes, uniquement celles qui changent d'état), même si je te recommande vivement de passer par du code.
0
corsichris
 
comment faire pour automatiser?
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
"automatiser requete sql" sur google.

Si ton site est important, il te faudra par exemple faire un html/php, renseigne toi sur ce qu'il ta faut.
0
corsichris
 
çà m'avance pas plus
je ne saurais tjs pas ecrire ma requete sql
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Pourquoi tu as besoin de tout changer d'un coup?
Ne fais pas répondre au sujet, vas dans ajouter un commentaire pour ne pas que ça descende trop.
0
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Tu peux mettre ta requête dans un fichier PHP et l'exécuter quand tu veux.
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/914508-ecrivez-des-donnees
0
corsichris
 
parce que j'ai rajouté un module sur prestashop, qui m'a modifié tous les états du champs 'active' qui les a passé à '1'.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Je n'ai pas suivi toutes la discussion ... mais ;..

Si tu veux mettre des "1" PARTOUT ... dans ce cas la requête que tu peux utiliser directement depuis phpmyadmin est :
UPDATE `pss_product` SET `active` = 1


Si tu veux mettre à jour que certains enregistrements... tu peux utiliser la même requête... mais en ajoutant une clause WHERE
par exemple (en partant du principe que tu as un champ de type 'id' te permettant d'identifer les lignes de la table à mettre à jour):
UPDATE `pss_product` SET `active` VALUES 
WHERE id IN (1,5,6,7,8,9,10) 



Cordialement, 
Jordane                                                                 
0
corsichris
 
merci de ta reponse,
mais en fait non j'ai que des '1' dans la nouvelle base,
et je voudrais mettre à jour certains produits avec des '0' plus de 5000 produits !!
j'ai pu recuperer de l'ancienne base la liste des 0 et 1 dans l'ordre des id,
mais autre probleme il ne correspondent pas,
c'est à dire l'ancienne base démarrait à id=35, à la nouvelle a id=30
pffff
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > corsichris
 
Ben si l' ID ne correspond pas ... essaye de trouver un autre champ qui pourrait te serveur d'identifiant ... comme .. le nom du produit par exemple.

Quelle est la structure de ta table ?
Peux tu, isoler dans ton ancienne table les enresitrements que tu souhaites mettre à 0 ?
0
corsichris
 
oui je peux selectionner les champs égale à 0 dans l'ancienne table,
mais les id correspondent pas et aucun autre champs ne correspond,
puis que c'est une migration d'un oscommerce à prestashop
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > corsichris
 
Si tu n'as aucune correspondance ... (et donc rien pour les identifier....) ... pourquoi cherches tu à mettres les "mêmes" valeurs ??
Je ne comprend pas !

A quoi sert cette table ?
Ne serait-elle pas en relation avec une autre table ?
Et dans ton ancienne BDD ... ne serait-ce pas la même chose ?
Et pour finir..... tu ne nous as toujours pas donné la structure de ta table !*

Par ce que là ... si tu n'as aucune correspondance, ni rien pour faire une correspondance entre cette table et ton ancienne... il te sera IMPOSSIBLE de faire ce que tu souhaites !
A moins que les enresitrements ne soient classés exactement dans le même ordre... et là ... comme le suggère Pierre, en utilisant un langage comme le PHP par exemple, tu pourras toujours faire une boucle pour mettre à jour les données.
0
corsichris
 
je recherche à mettre les memes valeurs car j'ai rajouté un module sur prestashop qui m'a tout reiniatialiser à '1' , et donc oui les enregistrements sont classés par ordre , et j'ai la liste des 0 et 1 dans l'ordre,

comment faire cette boucle alors??
0