Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/08/2013, 05:41
Avatar de gnzsoloyo
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)