Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2013, 16:38
Xavierss
 
Fecha de Ingreso: abril-2010
Mensajes: 3
Antigüedad: 14 años, 1 mes
Puntos: 0
Exclamación Update usando SubQuery (!)

Tengo una base de datos donde llegan piezas con codigos como "38DD-156871-1Z obviamente a cada registro le asigno un ID diferente

ahora el codigo del medio es el que realmente identifica a la guia 156871 el inicio y el final puede variar dependiendo de las cajas tamanos y eso

Ingreso eso codigos en una tabla de mi base de datos mediante un modulo en php donde con una pistola lectora de codigo de barras a medida que va escaneando va generando nuevos inputs y al procesar me ingresa todos los paquetes a la tabla

Ahora por ejemplo si el numero del medio que es el que identifica a la guia se repite quiere decir que esa guia tiene 2, 3, 4, 5 o .....n cantidad de piezas pero sigue siendo la misma guia el mismo cliente,

Ahora estoy haciendo una consulta donde me cuenta la cantidad de piezas que tiene esa guia osea donde se repite el numero del medio en este caso 156871 por ejemplo esto funciona perfecto:

SELECT COUNT( * ) FROM guias_inventario WHERE nro_guia LIKE '%156871%'

si son 8 registros donde se repite ese numero al ejecutar esa consulta me devuelve el nro 8

Ahora quiero hacerle un UPDATE a cada registro donde el campo PIEZAS = 8 en este caso

UPDATE `guias_inventario`
SET `piezas` = '8'
WHERE `nro_guia` LIKE '%156871%'

esto tambien trabaja perfecto me hace UPDATE a todos lo registros donde cambiado el campo PIEZAS en 8 donde el campo NRO_GUIA contiene estos numeros 156871

Lo que quiero hacer es hacerlo automatico son el subquery inicial

SELECT COUNT( * ) FROM guias_inventario WHERE nro_guia LIKE '%156871%' este subquery me devuelve 8

UPDATE `guias_inventario`
SET `piezas` = '8' <----- // Quiero incluir aqui el subquery //
WHERE `nro_guia` LIKE '%156871%'

Quedaria algo asi:

UPDATE `guias_inventario`
SET `piezas` = (SELECT COUNT( * ) FROM guias_inventario WHERE nro_guia LIKE '%156871%')
WHERE `nro_guia` LIKE '%156871%'

pero si lo coloco asi me arroja este error

MySQL ha dicho:

#1093 - You can't specify target table 'guias_inventario' for update in FROM clause

Alguien sabe si es posible hacer esto en MySQL??