Reputation: 37
I did a select query to find which products have a reference set when they not have a combination, and want to update that value to NULL from the result.
Anyone got an idea on how to build the query for the update?
SELECT QUERY:
SELECT
`id_product_supplier` , `id_product` , `id_product_attribute` ,
`product_supplier_reference` , COUNT( `product_supplier_reference` )
FROM `ps_product_supplier`
GROUP BY `id_product`
HAVING COUNT( `product_supplier_reference` ) >1
AND `id_product_attribute` =0
AND `product_supplier_reference` >0
I want to have an update that is product_supplier_reference
= NULL from the result.
Upvotes: 0
Views: 133
Reputation: 5656
TRY THIS if you want to simply update the particular column then select only required column in select statement as below and join it for the update:
UPDATE `ps_product_supplier` pps
INNER JOIN (
SELECT
`id_product`
FROM `ps_product_supplier`
WHERE `id_product_attribute` =0
AND `product_supplier_reference` >0
GROUP BY `id_product`
HAVING COUNT( `product_supplier_reference` ) >1) p ON p.id_product = pps.id_product
SET pps.product_supplier_reference = NULL
Upvotes: 0
Reputation: 1608
try this
update ps_product_supplier tt inner join(
SELECT
`id_product_supplier` , `id_product` , `id_product_attribute` , `product_supplier_reference` , COUNT( `product_supplier_reference` )
FROM `ps_product_supplier`
GROUP BY `id_product`
HAVING COUNT( `product_supplier_reference` ) >1
AND `id_product_attribute` =0
AND `product_supplier_reference` >0)t on t.id_product_supplier=tt.id_product_supplier
set tt.product_supplier_reference=null
Upvotes: 1
Reputation: 4192
Try below script
UPDATE ps_product_supplier SET product_supplier_reference = --Value
FROM
(
SELECT id_product_supplier , id_product , id_product_attribute ,
product_supplier_reference , COUNT( product_supplier_reference )
FROM ps_product_supplier
GROUP BY id_product
HAVING COUNT( product_supplier_reference ) >1 AND id_product_attribute =0
AND product_supplier_reference >0
) A WHERE --Your Codition
Upvotes: 0