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

[SOLUCIONADO] Insertar resultados de un SELECT

Estas en el tema de Insertar resultados de un SELECT en el foro de Mysql en Foros del Web. Buenas, llevo ya un buen tiempo queriendo hacer algo, tengo que meter en una tabla ciertos campos de otra, explico: Tengo una tabla venta: Código: ...
  #1 (permalink)  
Antiguo 18/08/2013, 01:34
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Insertar resultados de un SELECT

Buenas, llevo ya un buen tiempo queriendo hacer algo, tengo que meter en una tabla ciertos campos de otra, explico:

Tengo una tabla venta:
Código:
id
cod_producto
precio
cantidad
total
stock
user
y una tabla movimientos:
Código:
id
tipo
cod_producto
cantidad
fecha
user
Bien tengo que meter en movimientos todos los cod_producto y la cantidad que esten en la tabla ventas, el tipo lo rescato de un post.

Puedo hacer un INSERT con un SELECT como value pero debo quitar lo rojo ya que solo acepta el select como value, esto funciona pero no puedo meter mas datos !!
Código MySQL:
Ver original
  1. insert into movimientos (tipo, producto, cantidad, fecha, user)
  2. select cod,cant from venta
Otra forma que intente es hacer un select asi:
Cita:
Editado: Código de programacion no permitido en foros de bases de datos
Pero aca lo que me falta es meterle un contador donde inserte el numero de veces igual a las filas extraidas con el select (y creanlo o no eso me esta dando lata )

Sera que me di a entender que es lo que necesito y me puedan ayudar ???
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Última edición por gnzsoloyo; 18/08/2013 a las 05:33
  #2 (permalink)  
Antiguo 18/08/2013, 05:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Insertar resultados de un SELECT

Partamos de una base que puedes leer en cualquier manual: UN INSERT... SELECT... funciona únicamente si el SELECT devuelve el mismo numero de campos y en el mismo orden, que el conjunto de campos afectados por el INSERT. Sino, no lo puedes hacer.
Es decir que esto sí funciona:
Código MySQL:
Ver original
  1. INSERT INTO movimientos (producto, cantidad)
  2. SELECT cod, cant FROM venta
Pero los otros campos no se deben poner en el INSERT.
Ahora bien, si lo que necesitas es insertarlos, el SELECT debe obtener los valores a insertar de algún modo, sea que los pongas como fijos, o que el SELECT contenga un JOIN entre las tablas que contienen los datos...
Código MySQL:
Ver original
  1. INSERT INTO movimientos (tipo, producto, cantidad, fecha, user)
  2. SELECT 'venta', p.cod, v.cant, v.fecha, v.user
  3. FROM venta v INNER JOIN producto P ON v.cod = p.cod

Código MySQL:
Ver original
  1. INSERT INTO movimientos (tipo, producto, cantidad, fecha, user)
  2. SELECT 'venta', v.cod, v.cant, CURDATE()), USER()
  3. FROM venta v
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/08/2013, 08:14
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Insertar resultados de un SELECT

Muchas Gracias !!!! era justo lo necesario y aprendi mas a cerca de insertar un select, un gusto gnzsoloyo
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Etiquetas: campo, insert, resultados, select, sql, tabla
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 09:31.