¡A MÍ LA BRIGADA ANTI-CURSORES!

04/08/2004 - 14:43 por Jomaweb | Informe spam
Hola

Quiero hacer un update de una tabla de artículos vendidos extrayendo el
numero de articulos vendidos de otra tabla de ventas. Así:

select @tipo=select distinct tipo_articulo from articulos
UPDATE VENDIDO SET CANTIDAD=(select count(*) from ventas where
articulo=@tipo) WHERE ARTICULO=@tipo


pero me dice que el SP no se puede ejecutar dado que la selección devuelve
más de un registro. No quisiera usar Cursores ni Fetch, pero me temo que he
cometido un error de planteamiento en algún lado.

Gracias

Preguntas similare

Leer las respuestas

#1 Xavi
04/08/2004 - 14:53 | Informe spam
Si en la tabla tipo_articulo tienes más de un registro, la consulta

select @tipo=select distinct tipo_articulo from articulos

no se podrá asociar a la variable @tipo. Esta asignación sólo es posible si
la consulta

select distinct tipo_articulo from articulos

tuviese un sólo registro.


Xavi

"Jomaweb" escribió en el mensaje
news:%
Hola

Quiero hacer un update de una tabla de artículos vendidos extrayendo el
numero de articulos vendidos de otra tabla de ventas. Así:

select @tipo=select distinct tipo_articulo from articulos
UPDATE VENDIDO SET CANTIDAD=(select count(*) from ventas where
articulo=@tipo) WHERE ARTICULO=@tipo


pero me dice que el SP no se puede ejecutar dado que la selección devuelve
más de un registro. No quisiera usar Cursores ni Fetch, pero me temo que


he
cometido un error de planteamiento en algún lado.

Gracias


Respuesta Responder a este mensaje
#2 Carlos Sacristan
04/08/2004 - 14:56 | Informe spam
Una opción podría ser :

UPDATE VENDIDO SET CANTIDAD=(SELECT COUNT(*) FROM ventas WHERE
ventas.articulo=ventas.articulo)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:#
Hola

Quiero hacer un update de una tabla de artículos vendidos extrayendo el
numero de articulos vendidos de otra tabla de ventas. Así:

select @tipo=select distinct tipo_articulo from articulos
UPDATE VENDIDO SET CANTIDAD=(select count(*) from ventas where
articulo=@tipo) WHERE ARTICULO=@tipo


pero me dice que el SP no se puede ejecutar dado que la selección devuelve
más de un registro. No quisiera usar Cursores ni Fetch, pero me temo que


he
cometido un error de planteamiento en algún lado.

Gracias


Respuesta Responder a este mensaje
#3 Carlos Sacristan
04/08/2004 - 15:00 | Informe spam
Perdón, quería decir

UPDATE VENDIDO SET CANTIDAD=(SELECT COUNT(*) FROM ventas WHERE
ventas.articulo=VENDIDO.articulo)

Entiendo que lo que quieres es actualizar el número de ventas de cada
uno de los artículos, ¿verdad?



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:
Una opción podría ser :

UPDATE VENDIDO SET CANTIDAD=(SELECT COUNT(*) FROM ventas WHERE
ventas.articulo=ventas.articulo)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:#
> Hola
>
> Quiero hacer un update de una tabla de artículos vendidos extrayendo el
> numero de articulos vendidos de otra tabla de ventas. Así:
>
> select @tipo=select distinct tipo_articulo from articulos
> UPDATE VENDIDO SET CANTIDAD=(select count(*) from ventas where
> articulo=@tipo) WHERE ARTICULO=@tipo
>
>
> pero me dice que el SP no se puede ejecutar dado que la selección


devuelve
> más de un registro. No quisiera usar Cursores ni Fetch, pero me temo que
he
> cometido un error de planteamiento en algún lado.
>
> Gracias
>
>


Respuesta Responder a este mensaje
#4 ulises
04/08/2004 - 15:07 | Informe spam
Estas tratando de actualizar solo un registro con esas
sentencias, para hacerlo en bloque bastaría con algo como :

update vendidos
set cantidad = v.total
from ( select articulo, count(*) as total from ventas
group by articulo ) v
where vendidos.articulo = v.articulo

Saludos,
Ulises

Hola

Quiero hacer un update de una tabla de artículos vendidos


extrayendo el
numero de articulos vendidos de otra tabla de ventas. Así:

select @tipo=select distinct tipo_articulo from articulos
UPDATE VENDIDO SET CANTIDAD=(select count(*) from ventas


where
articulo=@tipo) WHERE ARTICULO=@tipo


pero me dice que el SP no se puede ejecutar dado que la


selección devuelve
más de un registro. No quisiera usar Cursores ni Fetch,


pero me temo que he
cometido un error de planteamiento en algún lado.

Gracias


.

Respuesta Responder a este mensaje
#5 joselitux
04/08/2004 - 18:15 | Informe spam
Efectivamente, esa es la idea



Entiendo que lo que quieres es actualizar el número de ventas de cada
uno de los artículos, ¿verdad?



Un saludo

- "Sólo sé que no sé nada.
" (Sócrates)

Por favor, responder únicamente al foro Se agradece la inclusión de
sentencias DDL


"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:
Una opción podría ser :

UPDATE VENDIDO SET CANTIDAD=(SELECT COUNT(*) FROM ventas WHERE
ventas.articulo=ventas.articulo)


Un saludo

- "Sólo sé que no sé
nada. " (Sócrates)

Por favor, responder únicamente al foro Se agradece la inclusión de
sentencias DDL


"Jomaweb" escribió en el mensaje
news:#
> Hola
>
> Quiero hacer un update de una tabla de artículos vendidos extrayendo
> el numero de articulos vendidos de otra tabla de ventas. Así:
>
> select @tipo=select distinct tipo_articulo from articulos UPDATE
> VENDIDO SET CANTIDAD=(select count(*) from ventas where
> articulo=@tipo) WHERE ARTICULO=@tipo
>
>
> pero me dice que el SP no se puede ejecutar dado que la selección


devuelve
> más de un registro. No quisiera usar Cursores ni Fetch, pero me temo
> que
he
> cometido un error de planteamiento en algún lado.
>
> Gracias
>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida