MySQL - Solicito ayuda para consulta de actualización

 
Vista:
sin imagen de perfil
Val: 14
Ha aumentado su posición en 3 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Solicito ayuda para consulta de actualización

Publicado por carlos (5 intervenciones) el 18/11/2020 22:36:23
Hola
A ver si alguno dispone de 2 minutos para ayudarme:

Tengo esta tabla: listaprecios (codigo, precio, nrolista)
codigo precio nrolista
A 45 1
A 0 2
B 35 1
B 0 2



quiero hacer .sql que ponga en el precio de lista 2 el doble del precio de lista 1

codigo precio nrolista
A 45 1
A 90 2
B 35 1
B 70 2

-----------------
esto es lo que no me funciona, no se como hacer para indicarle que es el doble del precio de `nrolista`=1
el que tiene que poner en `nrolista`=2

UPDATE `listaprecios`
SET `listaprecios`.`Precio` = `listaprecios`.`Precio`*2,
WHERE `listaprecios`.`nrolista`=2


Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 201
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Solicito ayuda para consulta de actualización

Publicado por Francisco (73 intervenciones) el 19/11/2020 19:21:49
Hola

Intenta asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
UPDATE
  listaprecios
SET
  listaprecios.Precio = (
    SELECT
      lp.Precio * 2
    FROM
      listaprecios lp
    WHERE
      lp.codigo = listaprecios.codigo
      AND lp.nrolista = 1
  )
WHERE
  listaprecios.nrolista = 2;

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 3 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Solicito ayuda para consulta de actualización

Publicado por carlos (5 intervenciones) el 19/11/2020 19:24:53
Gracias por tu respuesta.
en un rato lo pruebo y te aviso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 3 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Solicito ayuda para consulta de actualización

Publicado por carlos (5 intervenciones) el 19/11/2020 21:08:38
Me da Error:

"Error de SQL (1093): You can't specify target table 'listaprecios' for update in FROM clause"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 3 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Solicito ayuda para consulta de actualización

Publicado por carlos (5 intervenciones) el 19/11/2020 22:12:27
no se si es lo adecuado pero de esta forma funciona:

1
2
3
4
5
6
7
UPDATE
  listaprecios
INNER JOIN listaprecios lp1 ON (lp1.codigo = listaprecios.codigo AND lp1.nrolista=1)
SET
  listaprecios.Precio = lp1.Precio * 2
WHERE
  listaprecios.nrolista = 2;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 201
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Solicito ayuda para consulta de actualización

Publicado por Francisco (73 intervenciones) el 21/11/2020 01:44:25
Interesante y pregunto: te devuelve alguna cantidad de registros afectados?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 3 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Solicito ayuda para consulta de actualización

Publicado por carlos (5 intervenciones) el 25/11/2020 15:58:32
Revise los valores para nrolista = 2 y funciono.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar