mapisco Posted December 10, 2010 Report Share Posted December 10, 2010 (edited) Hola les cuento estoy haciendo la practica (y me piden hacer cosas que no son mi campo xD) y me pidieron obtener algunos datos de una base de datos y pasarlos a un excel, la cosa es que son demasiadas las planillas excel que tengo que generar (aprox 1400) y cada una de esas planillas tiene como 50 consultas de este tipo: SELECT avg(evaluacion) FROM (SELECT DISTINCT (curs_codigo) FROM z_profes WHERE pers_rut_profesor= 123456789) AS A, z_profes, notasalumnos WHERE z_profes.curs_codigo = A.curs_codigo and z_profes.pren_codigo In (366,367,368,369,370) and reen_codigo<>196 and z_profes.curs_codigo=notasalumnos.curs_codigo and A.curs_codigo= notasalumnos.curs_codigo and notasalumnos.pers_rut= z_profes.pers_rut_alumno and notasalumnos.cuin_nota_final >39 y se demora mucho pero mucho en generar, habra alguna forma de acelerar el proceso? se agradece muchisimo la ayuda Edited December 10, 2010 by mapisco Link to comment Share on other sites More sharing options...
Ra Posted December 10, 2010 Report Share Posted December 10, 2010 Bueno... como para partir... el uso de datos externos en Excel nunca fue, ni será óptimo... intenta cambiar a Excel 2007 o 2010 a ver si mejora un poco el tiempo de respuesta. 2º Las consultas trata de hacerlas usando INNER JOIN... y si los datos de las tablas intersectadas son muchos, usa una subconsulta como tabla intersectada en vez de la tabla completa.. Bueno... la consulta que posteaste quedaría más o menos así: SELECT avg(evaluacion) FROM ( SELECT DISTINCT (curs_codigo) AS curs_codigo, pers_rut_profesor FROM z_profes WHERE pers_rut_profesor= 123456789 ) AS A INNER JOIN z_profes ON z_profes.curs_codigo = A.curs_codigo AND z_profes.pren_codigo In (366,367,368,369,370) INNER JOIN notasalumnos ON z_profes.curs_codigo=notasalumnos.curs_codigo AND A.curs_codigo= notasalumnos.curs_codigo AND notasalumnos.pers_rut= z_profes.pers_rut_alumno WHERE reen_codigo<>196 AND notasalumnos.cuin_nota_final >39 3º Si estás usando SQL Server, Oracle, MySQL crea unos procedimientos almacenados que te traigan la información... La ejecución de un procedimiento almacenado es mucho más rápida que la consulta en duro... Salu2. Link to comment Share on other sites More sharing options...
mapisco Posted December 10, 2010 Author Report Share Posted December 10, 2010 (edited) dale gracias, de hecho si estoy usando excel 2007, no sera comos era comparado con excel antiguos, peor con el 2010 usando tipo de coneccion ace y todo eso me anda un pco mas lento, probare con eso. El tema de el uso de excel, es que necesito guardar los datos en una planilla para cada profesor, sobre todos los alumnos que responden encuestas de evaluacion para ellos, y luego tengo que comprar toda la facultad asi que son millones de datos.... Muchas gracias :) --- edit Lo que si no me compila.... me dice qe en esta parte: AND z_profes.pren_codigo In (366,367,368,369,370) falta un operador, lo junte le puse paréntesis y aun asi no funciona... a todo esto estoy trabajando con acces, supe por ahi que acces no permitia algunas instrucciones sql es cierto eso? Edited December 10, 2010 by mapisco Link to comment Share on other sites More sharing options...
Ra Posted December 10, 2010 Report Share Posted December 10, 2010 Si es cierto... Pero si estás usando access, porqué no haces unas vistas... luego haces unos formularios para obtener los datos... y en esos formularios puedes hacer que se generen los Excel más automático... Obvio... no sé cómo y qué es lo que pretendes obtener, por lo tanto, es difícil ayudarte... pero como te digo... si necesitas generar varios excel a partir de una base de datos access, quizás puedas generalizar las consultas (como vistas) y le pasas parámetros a esas vistas y con los resultados generas los excel... En vez de tener la consulta en cada uno de los excel... Link to comment Share on other sites More sharing options...
mapisco Posted December 12, 2010 Author Report Share Posted December 12, 2010 Si es cierto... Pero si estás usando access, porqué no haces unas vistas... luego haces unos formularios para obtener los datos... y en esos formularios puedes hacer que se generen los Excel más automático... Obvio... no sé cómo y qué es lo que pretendes obtener, por lo tanto, es difícil ayudarte... pero como te digo... si necesitas generar varios excel a partir de una base de datos access, quizás puedas generalizar las consultas (como vistas) y le pasas parámetros a esas vistas y con los resultados generas los excel... En vez de tener la consulta en cada uno de los excel... como no te entendi... es que mira primero que todo tengo que generar un excel para cada profesor de la universidad guardandose como rutprofesor_nombreprofesor.xls este excel tiene una plantilla predeterminada, que tengo que conservar y en las celdas de esa planilla, colocar los resultados que mencione antes, como la consulta del inicio del tema. Ojala se pueda entender un poco mejor y nuevamente muchisimas gracias por tu ayuda Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now