MySQL - Consulta correlacionada

 
Vista:

Consulta correlacionada

Publicado por D.Bilbao (2 intervenciones) el 09/02/2010 22:30:16
Tengo tres tablas: Clientes (cliente_no, debe, haber) Pedidos (pedido_no, producto_no, cliente_no, unidades, fecha) y productos (producto_no, precio, stock)

Tengo que hacer una consulta para actualizar el campo debe de la tabla clientes con el importe total de los pedidos, lo que podría ser en una consulta simple un:

SELECT SUM(unidades*precio)
FROM pedidos, productos
WHERE productos.producto_no=pedidos.producto_no
group by cliente_no

esta consulta devuelve múltiples valores por lo que no puedo usarla para hacer un update. ¿Cómo puedo hacerlo? Me han comentado que mediante una consulta correlacionada, pero estoy perdido.


Por otra parte tengo que hacer otra consulta que actualice stock en la tabla productos, restando al stock actual las unidades de producto que se han hecho en cada pedido, ¿Alguna idea?

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

UPDATE usando JOIN ...

Publicado por Gonzalo  (339 intervenciones) el 10/02/2010 01:25:40
UPDATE Clientes C INNER JOIN
(SELECT SUM(unidades*precio) sumatotal, cliente_no
FROM pedidos PE INNER JOIN productos PR ON PE.producto_no = PR.producto_no
GROUP BY cliente_no ) V ON c.cliente_no = V.cliente_no
SET C.debe = C.debe + V.sumatotal;

Tienes que leer el manual de referencia, el uso de JOIN en el UPDATE.
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

RE:UPDATE usando JOIN ...

Publicado por D.Bilbao (2 intervenciones) el 10/02/2010 20:17:54
No sabía que se podía usar el join en un update.
¿Conoces algún manual avanzado de SQL? no el típico con consultas triviales.

Muchísimas gracias
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

RE:UPDATE usando JOIN ...

Publicado por Gonzalo (339 intervenciones) el 11/02/2010 19:50:28
Me resulta un tanto difícil recomendarte un texto en especial para manejar SQL avanzado, porque no sé ni cuan avanzado es lo que necesitas ni si realmente es un texto lo que requieres.
Por un lado lo que más se necesita es saber sobre Bases de Datos, fundamentos, diseño e implementación (http://www.agapea.com/libros/Fundamentos-de-bases-de-datos-5-edc--isbn-8448146441-i.htm). Por otro lado lo que se requiere es conocer sobre optimizacion de consultas(http://www.agapea.com/buscar/buscador.php?texto=optimizacion+de+consultas&x=0&y=0), lo que varía de acuerdo al DBMS en cuestión, pero sobre este último punto podría darte algunas cosas:

http://jeremy.zawodny.com/mysql/mysql-optimization.html
http://ict.udlap.mx/people/carlos/is341/bases10.html
http://quarkblog.org/2007/04/22/joins-para-seres-humanos/
http://www.webtutoriales.com/
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