SQL - Update y Subselect en una sola sentencia

   
Vista:

Update y Subselect en una sola sentencia

Publicado por olwayz79 (3 intervenciones) el 23/04/2012 14:20:42
Buenos dias;
Tengo la siguiente sentencia

1
UPDATE pedidocabecera SET ImportePedido=(SELECT SUM (pedidolinea.ImporteLinea) FROM pedidolinea INNER JOIN pedidocabecera ON pedidocabecera .IdCabecera=pedidolinea.IdCabecera )


Lo que pretendo hacer es que teniendo dos tablas:
PedidoCabeceraCon los siguientes campos:
IdCabecera
Cliente
Fecha
ImportePedido

PedidoLineaCon los siguientes campos:
IdCabecera
IdLinea
Producto
Cantidad
Precio
ImporteLinea
Dcto
ImporteDcto

Actualizar PedidoCabecera.ImportePedido con la suma de PedidoLinea.ImporteLinea para cada pedido.
El tema es que esta sentencia me produce un error: You can't specify target table 'pedidocabecera' for update in FROM clause
No se me ocurre como podría hacerlo de otra forma.

Gracias por adelantado.
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

Update y Subselect en una sola sentencia

Publicado por olwayz79 (3 intervenciones) el 23/04/2012 15:38:13
Bueno ya lo he solucionado;

1
2
UPDATE pedidocabecera SET ImportePedido= (SELECT SUM(pedidolinea.ImporteLinea) FROM pedidolinea
WHERE pedidolinea.IdCabecera=pedidocabecera.IdCabecera)


Con esto no da error.
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 xve

Update y Subselect en una sola sentencia

Publicado por xve (237 intervenciones) el 23/04/2012 16:39:37
Muchas gracias por comentarlo... y muy bien pensado!!!
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

Update y Subselect en una sola sentencia

Publicado por olwayz79 (3 intervenciones) el 23/04/2012 21:17:50
Hola xve, si es que son cosas básicas, pero me estoy poniendo al dia con SQL y lo tengo olvidado. Seguramente más adelante me surgirán más preguntas que no me podré autoresponder jejej. Gracias por estar al tanto. Soy nueva en el foro e intentaré aportar lo que pueda con mis pocos conocimientos.
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

Update y Subselect en una sola sentencia

Publicado por Miguel Pena (4 intervenciones) el 06/05/2012 02:32:33
UPDATE pedidoCabecera SET ImportePedido=b.Total
FROM pedidoCabecera
INNER JOIN
(
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

Update y Subselect en una sola sentencia

Publicado por Miguel Pena (4 intervenciones) el 06/05/2012 02:38:15
Con el UPDATE FROM puede resolver este problema, mira este codigo a ver si te ayuda.

UPDATE pedidoCabecera SET importePedido=t2.TotalNeto
FROM pedidoCabecera t1 INNER JOIN (SELECT idCabecera,SUM((precio*cantidad)-dcto) TotalNeto FROM pedidoLinea GROUP BY idCabecera) t2
ON t1.idCabecera=t2.idCabecera

Saludos
mp
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