Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problema con select

Estas en el tema de Problema con select en el foro de SQL Server en Foros del Web. Hola amigos, tengo un problema con un update sobre un select que quiero hacer. por supuesto tengo 0004% de conocimiento y recien estoy aprendiendo, así ...
  #1 (permalink)  
Antiguo 29/07/2011, 14:29
 
Fecha de Ingreso: octubre-2010
Ubicación: Palermo
Mensajes: 55
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta Problema con select

Hola amigos, tengo un problema con un update sobre un select que quiero hacer.
por supuesto tengo 0004% de conocimiento y recien estoy aprendiendo, así que disculpen de ante mano.

Codigo:

UPDATE precios SET precios.PRECIO_UNI= tabla.PRECIO
FROM (
SELECT lista.cod_articu, lista.NRO_DE_LIS, lista.precio FROM lista inner join precios on precios.COD_ARTICU = lista.COD_ARTICU
where lista.nro_de_lis='9999' ) as tabla

fin----
Este codigo funciona mal, todos los precios de la tabla "precios" me quedaron iguales.
Y la idea es la siguiente:
1 se actualicen los precios de los articulos que estan en las 2 tablas.
2 los precios a utilizar son los de la lista 9999 de la tabla lista .

si me dan una manito.... gracias, y más gracias.
Saludos
Gustavo.
  #2 (permalink)  
Antiguo 29/07/2011, 14:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con select

A ver veamos lo que quieres hacer, si entiendo bien el concepto de lo que deseas es actualizar 2 tablas con una sola sentencia? es eso verdad?? Para empezar las operaciones UDI son sobre una sola tabla(insert,update & delete) asi que si necesitas actualizar mas de una tabla tendrias que hacer 2 update

en esta consulta

UPDATE precios SET precios.PRECIO_UNI= tabla.PRECIO
FROM (
SELECT lista.cod_articu, lista.NRO_DE_LIS, lista.precio FROM lista inner join precios on precios.COD_ARTICU = lista.COD_ARTICU
where lista.nro_de_lis='9999' ) as tabla

Lo que estas haciendo es poner en la tabla precio el precio del articulo 9999 de la lista, a toda la tabla le estas poniendo ese precio, no seria mejor hacer esto

Update precios
set precios.precio_uni=t1.precio
(select lista.precio from lista where lista_nro_de_lis='9999') as t1
where precio.cod_arti=list.cod_arti


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 31/07/2011, 15:17
 
Fecha de Ingreso: octubre-2010
Ubicación: Palermo
Mensajes: 55
Antigüedad: 13 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Problema con select

Hola Libras, gracias por el codigo,
lo único es que al código que me enviaste:
--------
Update precios
set precios.precio_uni=t1.precio
(select lista.precio from lista where lista_nro_de_lis='9999') as t1
where precio.cod_arti=list.cod_arti
-------

Para que funcione le tuve que agregar y cambiar algunas cosas, por ejemplo

En la linea " (select lista.precio from lista where lista_nro_de_lis='9999') as t1 "
quedo con un from antes.

set precios.precio_uni=t1.precio
from (select lista.precio, lista.cod_articu from lista where nro_de_lis='9999') as t1

También tuve que incluir cod_articu, sino en el where me decía que no podía encontrar la columna cod_arti
El el where cambié la referencia a lista por el sinonimo de la tabla t1.cod_articu.

De esa forma funcionó sin problemas
Ideas? faltaban o tengo algo que no funciona en el sql.
Te comento que estoy utilizando sql2005 express, por las dudas para probar esto.
Desde ya gracias, por todo.

Saludos
Gustavo
  #4 (permalink)  
Antiguo 01/08/2011, 07:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con select

Si todo quedo bien entonces no veo que tengas problema, la consulta que te pase tiene un error en el from como bien mencionas, pero era nada mas para que te dieras una idea de como armar tu query :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: select, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:55.