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

Insert Into????

Estas en el tema de Insert Into???? en el foro de SQL Server en Foros del Web. Hola a todos!!!!! Mi problema es el siguiente, se que para algunos es algo muy facil, pero ultimamente estoy medio oxidado en SQL..... Tengo esta ...
  #1 (permalink)  
Antiguo 25/04/2006, 09:41
Avatar de focesar  
Fecha de Ingreso: abril-2005
Mensajes: 84
Antigüedad: 19 años
Puntos: 0
De acuerdo Insert Into????

Hola a todos!!!!!

Mi problema es el siguiente, se que para algunos es algo muy facil, pero ultimamente estoy medio oxidado en SQL.....
Tengo esta consulta de seleccion para que me devuelva los estudiantes que no se les ha ingresado datos en la tabla de conducta, para que puedan ser ingresados. Pero el problema esta en que no se como agregarle la opcion de insercion a la consulta, o sea, estoy MFT (miando fuera del tarro)....

Les agradeceria sobre manera que me ayuden a llegar a esto.


SELECT dbo.estudiante.Cedula, dbo.Mes.Mes
FROM dbo.estudiante CROSS JOIN
dbo.Mes
WHERE (NOT EXISTS
(SELECT Id_estudiante, Id_mes
FROM dbo.conducta
WHERE id_mes = mes.mes AND id_estudiante = estudiante.cedula))
GROUP BY dbo.estudiante.Cedula, dbo.Mes.Mes, dbo.estudiante.fecha_desercion, dbo.Mes.Id_mes, dbo.estudiante.Seccion
HAVING (dbo.estudiante.fecha_desercion IS NULL) AND (dbo.Mes.Mes = N'Marzo') AND (dbo.estudiante.Seccion <> N'Preparatoria')
ORDER BY dbo.estudiante.Cedula, dbo.Mes.Id_mes
__________________
El valor el hombre no es proporcional a las veces que ha triunfado, sino a las veces que se a levantado de los errores

:pensando:
  #2 (permalink)  
Antiguo 25/04/2006, 10:04
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola, a tu consulta antecede el INSERT INTO tabla:

INSERT INTO tabla
SELECT col1,col2 FROM tablax
WHERE ......

Bueno, no se SqlServer, pero en Oracle, por ejemplo si quieres insertar en algunos campos los especificas, tanto en la clausula del INSERT como en el SELECT...
Espero que sea eso lo que deseas, en tu caso, solo antecede el INSERT a tu consulta
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #3 (permalink)  
Antiguo 25/04/2006, 11:15
Avatar de focesar  
Fecha de Ingreso: abril-2005
Mensajes: 84
Antigüedad: 19 años
Puntos: 0
Pos no!!!!

Estuve intentando del medio que me dices, que es lo que viene en los libros en pantalla del SQL Server, pero no me funciona, me devuelve un error que dice que no es un agrumento valido con la opcion Select
__________________
El valor el hombre no es proporcional a las veces que ha triunfado, sino a las veces que se a levantado de los errores

:pensando:
  #4 (permalink)  
Antiguo 25/04/2006, 14:07
Avatar de Carcharhinus  
Fecha de Ingreso: septiembre-2004
Mensajes: 264
Antigüedad: 19 años, 7 meses
Puntos: 0
INSERT INTO estudiante..Cedula
SELECT campo1, campo2, campo3..campo n,
FROM estudiante..Mes (imagino que estudiante es la BD)
WHERE id_mes = mes.mes AND id_estudiante = estudiante.cedula))
GROUP BY dbo.estudiante.Cedula, dbo.Mes.Mes, dbo.estudiante.fecha_desercion, dbo.Mes.Id_mes, dbo.estudiante.Seccion
HAVING (dbo.estudiante.fecha_desercion IS NULL) AND (dbo.Mes.Mes = N'Marzo') AND (dbo.estudiante.Seccion <> N'Preparatoria')
ORDER BY dbo.estudiante.Cedula, dbo.Mes.Id_mes

espero te ayude...Saludos
__________________
"Never attribute to malice that which can be adequately explained by stupidity."
  #5 (permalink)  
Antiguo 25/04/2006, 14:18
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Si no es molestia como haz realizado tu insert .... select?, podrias copiarlo???
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #6 (permalink)  
Antiguo 25/04/2006, 15:21
Avatar de focesar  
Fecha de Ingreso: abril-2005
Mensajes: 84
Antigüedad: 19 años
Puntos: 0
La consulta de insercion la hice asi:

INSERT INTO conducta
(Cedula,mes)
SELECT TOP 100 PERCENT dbo.estudiante.Cedula, dbo.Mes.Mes
FROM dbo.estudiante CROSS JOIN
dbo.Mes
WHERE (NOT EXISTS
(SELECT Id_estudiante, Id_mes
FROM dbo.conducta
WHERE id_mes = mes.mes AND id_estudiante = estudiante.cedula))
GROUP BY dbo.estudiante.Cedula, dbo.Mes.Mes, dbo.estudiante.fecha_desercion, dbo.Mes.Id_mes, dbo.estudiante.Seccion
HAVING (dbo.estudiante.fecha_desercion IS NULL) AND (dbo.Mes.Mes = N'Marzo') AND (dbo.estudiante.Seccion <> N'Preparatoria')
ORDER BY dbo.estudiante.Cedula, dbo.Mes.Id_mes
__________________
El valor el hombre no es proporcional a las veces que ha triunfado, sino a las veces que se a levantado de los errores

:pensando:
  #7 (permalink)  
Antiguo 25/04/2006, 15:22
Avatar de focesar  
Fecha de Ingreso: abril-2005
Mensajes: 84
Antigüedad: 19 años
Puntos: 0
Si me pudieran decir donde estoy metiendo las patas se lo agradeceria
__________________
El valor el hombre no es proporcional a las veces que ha triunfado, sino a las veces que se a levantado de los errores

:pensando:
  #8 (permalink)  
Antiguo 25/04/2006, 15:37
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Otra consulta. Haz probado si funciona tu SELECT?. No se en Sql Server, pero en Oracle, en el group by se pone los campos de la cabecera, pues no acepta campos que no esten en la cabecera....
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #9 (permalink)  
Antiguo 25/04/2006, 15:51
Avatar de focesar  
Fecha de Ingreso: abril-2005
Mensajes: 84
Antigüedad: 19 años
Puntos: 0
Si, lo he probado hasta el cansancio, y si funciona a la perfeccion.
Lo que hace es llamarme la cedula y el mes de una consulta cartesiana entre la tabla estudiante y la tabla mes, una vez que me da los datos los filtro por el mes y por los que ya estan en la tabla conducta y trabaja excelente....
Antes la tenia tal y como la he puesto antes corriendo en Access, y no me daba problemas, lo unico es que el colegio ha crecido y ya no sirve tener la base de datos en Access asi que la estoy migrando a SQL server, pero no me sirven este tipo de consultas....
Tenes una idea??
__________________
El valor el hombre no es proporcional a las veces que ha triunfado, sino a las veces que se a levantado de los errores

:pensando:
  #10 (permalink)  
Antiguo 25/04/2006, 15:55
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Todo parece correcto, esta de acuerdo a la sintaxis. Prueba haciendo un insert select simple....si es que inserta
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #11 (permalink)  
Antiguo 25/04/2006, 16:10
Avatar de focesar  
Fecha de Ingreso: abril-2005
Mensajes: 84
Antigüedad: 19 años
Puntos: 0
Suave, un momento, me dejaste MFT. Como es eso de un insert select simple????.....
__________________
El valor el hombre no es proporcional a las veces que ha triunfado, sino a las veces que se a levantado de los errores

:pensando:
  #12 (permalink)  
Antiguo 25/04/2006, 16:24
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Por ejemplo:
Me creo una tabla temporal con un campo, y hago :

Insert into tabla (campo1)
select camp from tabla2;

Me referia a eso. Disculpame si no pueda ayudarte mucho, pues yo uso Oracle, he revisado la sintaxis de insert select para sqlserver y esta correcto supuestamente....
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #13 (permalink)  
Antiguo 25/04/2006, 16:47
Avatar de focesar  
Fecha de Ingreso: abril-2005
Mensajes: 84
Antigüedad: 19 años
Puntos: 0
Ya se cual es el problema, simplemente que no deberia de haber eso como vista (consulta), habia que hacerlo como un procedimiento almacenimiento y funciona a la perfeccion
__________________
El valor el hombre no es proporcional a las veces que ha triunfado, sino a las veces que se a levantado de los errores

:pensando:
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 06:20.