J'ai un db eshop et j'ai dupliqué quelques produits afin de les déplacer vers une autre catégorie (gros/détail). Je dois mettre à jour le category_id pour chaque produit qui a « [CLONE] » dans son nom, c'est ce que im faire:Mettre à jour la table en utilisant 2 jointures
D'abord, je vérifier combien de produits doivent être déplacés:
select p.product_id, pd.product, pc.category_id
from cscart_products p
join `cscart_product_descriptions` pd on p.product_id = pd.product_id
join `cscart_products_categories` pc on p.product_id = pc.product_id
where pd.product like '%CLONE%'
and pc.category_id = '17'; -- 17 is the current category_id
16 rangées récupérées;
Puis, j'effectuer la mise à jour:
UPDATE cscart_products_categories pc
join `cscart_product_descriptions` pd on pc.product_id = pd.product_id
join `cscart_products` p on pc.product_id = p.product_id
SET pc.category_id = '30' -- the category to be moved to
WHERE pc.category_id = '17'
AND pd.product like '%[CLONE]%';
9 lignes affectées;
Comme vous pouvez le voir, seulement 9 sur 16 sont mis à jour, évidemment, quelque chose ne va pas dans ma déclaration de mise à jour, mais quoi? Les données d'échantillon peuvent être trouvés ici http://www.megaupload.com/?d=AM85UQFY
J'ai mis à jour le message original parce que j'avais tort de mettre les valeurs dans la requête UPDATE dans le mauvais ordre. – bikey77
Ces 7 non affectés peuvent déjà être de la valeur 30 et donc non affectés? –