Rechercher : dans
Par :

[SQL] pb mise à jour d'une colonne

Dernière réponse le 31 oct 2006 à 19:10:52 Paulo69, le 28 oct 2006 à 17:48:56 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [SQL] pb mise à jour d'une colonne » dans :
SQL - Mise à jour d'informations Voir Le SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de...
Mise à jour d'AntiVir impossible ? VoirImpossible de mettre à jour AntiVir Suite à l'installation de l'antivirus AntiVir, vous n'arrivez pas à le mettre à jour ? Pas de panique. Problème : Lorsque vous cliquez sur "Démarrer la mise à jour", rien ne se produit ? Cause : Une...
[appareils Philips] Mise a jour firmware ou codec VoirMise a jour du firmware ou des codecs Philips pour - lecteur DVD de salon - lecteur et graveur interne PC Philips International a mis en place une nouvelle mise en page pour la recherche des firmwares et des drivers de ses appareils :...
Télécharger Norton Antivirus Mise à jour VoirVoici la dernière mise à jour téléchargeable pour l'antivirus Norton pour vous assurer une protection optimale contre les virus. Prend en charge les versions suivantes des logiciels antivirus de Symantec : Norton Antivirus 2009 for Windows XP...

1

Michael_Ange, le 29 oct 2006 à 08:47:12

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

Répondre à Michael_Ange

2

Paulo69, le 29 oct 2006 à 19:24:55

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

Répondre à Paulo69

3

Michael_Ange, le 29 oct 2006 à 23:26:30

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!!!

Répondre à Michael_Ange

4

Paulo69, le 30 oct 2006 à 10:22:44

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 !!

Répondre à Paulo69

5

 Paulo69, le 31 oct 2006 à 19:10:52

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

Répondre à Paulo69