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

10 réponses

Résumé de la discussion

Mise à jour en masse du champ 'active' d'une table via phpMyAdmin, pour environ 5000 enregistrements de pss_product sans toucher aux autres colonnes. Des réponses recommandent d’utiliser UPDATE en ciblant uniquement les enregistrements à modifier, par exemple UPDATE pss_product SET active = 1 WHERE active = 0. Les échanges rappellent qu’il n’existe pas de requête miracle pour modifier des milliers de valeurs sans préciser les enregistrements, et que des migrations OSCommerce vers PrestaShop peuvent influencer la méthode. En cas de difficulté, plusieurs suggèrent d’automatiser via une vue ou un script afin d’éviter les saisies répétitives et d’optimiser l’opération.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Pierre1310 Messages postés 8854 Statut Membre 652
     
    Bonjour,

    Tu veux y écrire quoi?
    Tu écris en brut dans ta base? Pas de vue/code derrière?
    0
  2. 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
    1. Pierre1310 Messages postés 8854 Statut Membre 652
       
      Combien y a-t-il de 0 et combien de 1?
      0
  3. 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
    1. Pierre1310 Messages postés 8854 Statut Membre 652
       
      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
      1. corsichris > Pierre1310 Messages postés 8854 Statut Membre
         
        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
    2. Pierre1310 Messages postés 8854 Statut Membre 652
       
      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
  4. corsichris
     
    comment je pourrais proceder alors?
    0
    1. Pierre1310 Messages postés 8854 Statut Membre 652
       
      Ba je t'ai posé une question au tout début, j'attends toujours ma réponse.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. corsichris
     
    vider le champs 'active' et faire un insert?
    0
  7. corsichris
     
    pardon laquelle de question?
    0
    1. Pierre1310 Messages postés 8854 Statut Membre 652
       
      Tu écris en brut dans ta base? Pas de vue/code derrière?
      0
  8. 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
    1. Pierre1310 Messages postés 8854 Statut Membre 652
       
      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
  9. corsichris
     
    comment faire pour automatiser?
    0
    1. Pierre1310 Messages postés 8854 Statut Membre 652
       
      "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
  10. corsichris
     
    çà m'avance pas plus
    je ne saurais tjs pas ecrire ma requete sql
    0
    1. Pierre1310 Messages postés 8854 Statut Membre 652
       
      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
    2. 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
  11. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    1. 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
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > 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
    3. 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
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > 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
    5. 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