FoxPro/Visual FoxPro - ayuda con sql

   
Vista:

ayuda con sql

Publicado por mario (90 intervenciones) el 14/04/2010 01:24:26
hola a todos me urge una ayuda para hacer mas rapido una consulta sql, mi sentencia es muy facil pero la base de datos tiene muchos registros si alguien me puede ayudar algun comando o truco que acelere la consulta, estoy capturando de una tabla solo dos campos codigo y nombre, el codigo hago un count para saber la cantidad de ese codigo que existe, desde ya gracias y espero su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauricio

ayuda con sql

Publicado por Mauricio (1367 intervenciones) el 14/04/2010 02:46:48
Puedes poner el codigo SQL para empezar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con sql

Publicado por mario (90 intervenciones) el 14/04/2010 03:11:30
antes que nada es una base de un laboratorio que tienen datos desde el año 98 ,aqui les muestro el codigo sql es sencillo pero muy lento

necesito saber la cantidad de cada tipo de analisis realizados desde tal fecha hasta tal fecha.

tengo una tabla que se llama movimiento donde se guarda los datos que necesito ej. cod_analisis,nombre,fecha,monto,tipo de seguro etc.

select cod_analisis, nombre, count(cod_analisis) as cantidad ;
from movimiento;
where cod_analisis= thisform.combo.value;
and fecha >= txtfechainicio and fecha<=txtfechaultimo;
into cursor listado

este es el codigo y tarda un monton gracias y espero respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio

ayuda con sql

Publicado por Mauricio (1367 intervenciones) el 14/04/2010 04:24:18
Prueba este codigo:
vfecini = CTOD('15/03/1998') && txtfechainicio
vfecfin = CTOD ('31/12/2000') && txtfechaultimo
*
select cod_analisis, nombre, count(cod_analisis) as cantidad ;
from movimiento;
where BETWEEN(fecha,vfecini,vfecfin);
into cursor listado
*
PD. En el WHERE quite la comparacion de codigo de analisis para que te reporte la cantidad de todos los cod_analisis en el rango que escoges.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con sql

Publicado por alberto (399 intervenciones) el 14/04/2010 15:45:01
prueba asi

select cod_analisis, nombre, count(cod_analisis) as cantidadtotal ;
from movimiento;
where BETWEEN(fecha,thisform.text1.value,thisform.text2.value);
order by fecha , cod_analisis ;
into cursor listado

si usas fox 8 o 9 pon en el prg principal SET ENGINEBEHAVIOR 70
PARA QUE NO TE DE ERROR POR EL ORDER BY .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con sql

Publicado por mario (90 intervenciones) el 14/04/2010 22:43:06
muy buenas y gracias por las respuestas pero no me a funcionado sigue siendo lento ademas traigo los datos de dos tablas ej

select departamento.codigo, count(departamento.codigo)as cant , ciudad.nombre, departamento.fechacarga;
from ciudad, departamento
where departamento.codigo=departamento.codigo and
fechacarga<=thisform.fecini.value and fechacarga >= thisform.fechasta.value
into cursor

si me pueden ayudar o enviar trucos para hacer mas rapido una consulta sql
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con sql

Publicado por kong (681 intervenciones) el 14/04/2010 23:53:19
que tal si mantienes un index de la tabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar