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

INSERT..SELECT Error 1242

Estas en el tema de INSERT..SELECT Error 1242 en el foro de Mysql en Foros del Web. Hola amigos tengo que insertar a una tabla que es la suiguiente: tiempos id_tiempos PK id_actividad id_empleado tengo que hacer un insert masivo de esa ...
  #1 (permalink)  
Antiguo 08/03/2012, 12:10
 
Fecha de Ingreso: octubre-2011
Mensajes: 15
Antigüedad: 12 años, 6 meses
Puntos: 0
INSERT..SELECT Error 1242

Hola amigos tengo que insertar a una tabla que es la suiguiente:

tiempos

id_tiempos PK
id_actividad
id_empleado

tengo que hacer un insert masivo de esa tabla con la actividad con id=1, y tengo que poner a todos los empleados que hay que estan en otra tabla como sigue:

empleado

id_empleado PK
nombre

En otras palabras tengo que agregar con una sola consulta a todos los empleados con una actividad especifica.

Para esto estoy utilizando esta sentencia:
INSERT INTO tiempos (id_actividad,id_empleado)
VALUES(1,(SELECT empleado.id_empleado FROM empleado));

Me marca el siguiente error: "Subquery returns more than row" Error 1242.

Alguien podria darme una solucion se los agradeceria mucho.
Saludos
  #2 (permalink)  
Antiguo 08/03/2012, 13:18
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: INSERT..SELECT Error 1242

Código MySQL:
Ver original
  1. INSERT INTO tiempos (id_actividad, id_empleado)
  2. SELECT 1, id_empleado
  3. FROM empleado;
No necesitas poner VALUES para hacer un INSERT ... SELECT...
__________________
¿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 08/03/2012, 13:24
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: INSERT..SELECT Error 1242

Hola sergio_ivan_vr:

Si entendí correctamente lo que quieres hacer sería más o menos así:

Código MySQL:
Ver original
  1. INSERT INTO tiempos (id_actividad, id_empleado)
  2. SELECT 1,  id_empleado FROM empleado;

es decir, si ejecutas sólo el SELECT te regresará todos los empleados existentes asignándoles un id_actividad = 1. Supongo que tu campo id_tiempos es un campo autoincremental, por eso no lo colocas en el insert... debes tener cuidado entonces de verificar que no existan en la tabla un empleado con una actividad = 1, ya que tendrías un problema de duplicados. Para evitar esto lo único que tienes que hacer agregar una condición NOT IN, NOT EXIST o LEFT JOIN a tu consulta.

Cita:
EDITO: Misma respuesta que gnzsoloyo (otra vez jejejeje). Saludos
Saludos
Leo.
  #4 (permalink)  
Antiguo 08/03/2012, 14:10
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: INSERT..SELECT Error 1242


Aveces tu, a veces yo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/03/2012, 09:09
 
Fecha de Ingreso: octubre-2011
Mensajes: 15
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: INSERT..SELECT Error 1242

Hola amigos gracias a ambos por sus respuestas tienen razon no se ponen values, les comento que ya lo solucione de la siguiente manera:

INSERT INTO tiempo_actividad (id_area_actividad,id_evento,id_recinto,id_emplead o)
SELECT 100,47,1,e.`id_empleado`
FROM empleado e WHERE e.`id_area`!=6;

hago el insert.. select este no lleva values, y pongo a los campos valores fijos (100,47,1),el unico valor que si va a cambiar es el id_empleado, entonces cuando hago el insert agrega todos los empleados con los valores fijos que le coloque. Espero que a alguien mas le sirva esto.

Saludos

Etiquetas: query, select, 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 19:05.