[SQL] pb mise à jour d'une colonne

Bonjour,

Je n'arriva pas ecrire l'ordre SQL pour faire la mise à jour suivante :
dans une table article, j'ai une colonne ref_article et une colonne prix_article

Dans la colonne ref_article j'ai des article avec le prix associé chargé depuis un csv.

Pour certains articles avec des codes nuances, par exemple des pots de peinture de couleurs différentes, j'ai une ref_article de la famille ex: BAD01 avec des ref_article différentes pour chaque nuance ex BAD01A = blanc, BAD01F = noir, BAD01T = rouge, ... avec un prix à NULL car non disponible au chargement alors qu'il est égal au prix disponible de la famille BAD01.

Comment ecrire l'ordre SQL de mise à jour :
UPDATE article
SET prix_article des BAD01x = prix_article du BAD01

merci pour votre aide
Paul

5 réponses

  1. salut paulo. y'a une chose ke je e compren pas bien dans ton message.
    Comment est ce que s'effectue le chargement de tes prix (avec un peu plus de détail STP).
    pour la mise à jour de tes colonnes, t'as qu'a essayé :
    UPDATE article
    SET prix_article = prix_réell where ref_article = BAD01x
    0
    1. Merci Michel Ange pour ta réponse.

      je te donne la structure de ma table et l'objectif de l'update

         --
          -- Structure de la table `easy_pop`
          -- 
      
          CREATE TABLE `EASY_POP` (
            `EAP_ID`           INT(10) UNSIGNED NOT NULL DEFAULT '0' ,
            `V_PRODUCTS_MODEL` VARCHAR(12) NOT NULL DEFAULT '' ,
            `V_PRODUCTS_PRICE` DECIMAL(15,4) DEFAULT '0.0000' ,
            PRIMARY KEY( `EAP_ID` ),
            UNIQUE KEY `V_PRODUCTS_MODEL`( `V_PRODUCTS_MODEL` ))
          ENGINE = MYISAM
          DEFAULT CHARSET = LATIN1;
          -- 
          -- Contenu de la table `easy_pop`
          -- 
      
          INSERT INTO `EASY_POP` VALUES     (10,'AAA05047',12.0000);
      
          INSERT INTO `EASY_POP` VALUES     (11,'AAA05047A',NULL);
      
          INSERT INTO `EASY_POP` VALUES     (12,'AAA05047B',NULL);
      
          INSERT INTO `EASY_POP` VALUES     (14,'AAA10012',16.2000);
      
          INSERT INTO `EASY_POP` VALUES     (15,'AAA10012A',NULL); 


      Ce qui me donne :

          Code Art      Prix
          10 - AAA05047  - 12.0000
          11 - AAA05047A - NULL
          12 - AAA05047B - NULL
          14 - AAA10012  - 16.2000
          15 - AAA10012A - NULL


      et je souhaiterai faire l'update pour avoir :

         10 - AAA05047   - 12.0000
          11 - AAA05047A  - 12.000
          12 - AAA05047B  - 12.000
          14 - AAA10012   - 16.2000
          15 - AAA10012A  - 16.200


      Merci pour votre aide
      Paul

      MySQL 4.1.9
      0
      1. ce que j'aimerais savoir, c'est est ce que la récup des prix se fait depuis une table?
        Si oui, envoie la structure de cette table.
        dans le cas contraire, je suppose que les différents prix viennent de toi.
        dans ce cas tu seras obligé de modifier la colonne un peu comme je l'ai expliqué précédemment!!!
        0
        1. Bonjour Mickael_Ange,

          Les données viennent de fichier csv.
          Un fichier des articles avec tous les codes articles et un fichier tarif avec uniquement les tarifs des articles de base d'ou le NULL pour le prix des articles avec nuances !!
          0
          1. Ordres Update résolvant le pb :

            UPDATE `easy_pop` as e1 join `easy_pop` as e2
              SET  E1.V_PRODUCTS_PRICE = E2.V_PRODUCTS_PRICE
            WHERE SUBSTR(e1.v_products_model, 1, 8)=SUBSTR(e2.v_products_model, 1, 8)
            AND e2.V_PRODUCTS_PRICE IS NOT NULL]


            ou

            UPDATE `easy_pop` as e1 join `easy_pop` as e2
            SET  E1.V_PRODUCTS_PRICE = E2.V_PRODUCTS_PRICE
            WHERE SUBSTR(e1.v_products_model, 1, 8)=SUBSTR(e2.v_products_model, 1, 8)
            AND e2.V_PRODUCTS_PRICE IS NOT NULL
            AND e2.eap_id != e1.eap_id


            ou encore

            UPDATE `easy_pop` as e1 join `easy_pop` as e2
            ON SUBSTR(e1.v_products_model, 1, 8)=SUBSTR(e2.v_products_model, 1, 8)
            AND e2.V_PRODUCTS_PRICE IS NOT NULL
            AND e2.eap_id != e1.eap_id
            SET  E1.V_PRODUCTS_PRICE = E2.V_PRODUCTS_PRICE


            Have Fun
            0