Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-03-2010
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 21
tgsistemas Va por buen camino
Question consulta con tabla temporal para hacer acumulados

Hola a tod@s,

estoy empezando con MySql, siempre he utilizado SQL2000 y las versiones express de éste. En sql2000 hacía consultas en tabla temporales para calcular datos de columnas contretas. Estoy intentando hacer lo mismo en mysql con esta query:

Código SQL [-]
DROP TABLE tbtmptgs;

SELECT  cdgo, centro, fecha, visitas, motnotot, motno01, motno02, motno03, motno04, motno05, segllam, vllamdec, impventas
   into tbtmptgs
FROM tb03P WHERE centro = 1004 and fecha between '2010-03-01' and '2010-03-20'
SELECT centro,
  max(fecha),
  SUM(visitas) AS rvisitas,
  SUM(motnotot) AS rmotnotot,
  SUM(motno01) AS rmotnotot01,
  SUM(motno02) AS rmotnotot02,
  SUM(motno03) AS rmotnotot03,
  SUM(motno04) AS rmotnotot04,
  SUM(motno05) AS rmotnotot05,
  SUM(segllam) AS rsegllam,
  SUM(vllamdec) AS rvllamdec,
  SUM(impventas) AS rimpventas
FROM tmptgs
GROUP BY centro

pero siempre me produce el error "unknown table tmptgs", lo estoy probando desde el navicat, no he probado a hacerlo desde phpmyadmin.

Alguien podría indicarme si la consulta es correcta por favor?

Saludos y Muchas Gracias
__________________
Toni | blog
Responder Con Cita
  #2  
Antiguo 17-03-2010
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 21
tgsistemas Va por buen camino
lo he solventado de la siguiente forma :
Código SQL [-]
SELECT max(centro),
  max(fecha),
  SUM(visitas) AS rvisitas,
  SUM(motnotot) AS rmotnotot,
  SUM(motno01) AS rmotnotot01,
  SUM(motno02) AS rmotnotot02,
  SUM(motno03) AS rmotnotot03,
  SUM(motno04) AS rmotnotot04,
  SUM(motno05) AS rmotnotot05,
  SUM(segllam) AS rsegllam,
  SUM(vllamdec) AS rvllamdec,
  SUM(impventas) AS rimpventas
FROM tb03P WHERE centro = 1004 and fecha between '2010-03-01' and '2010-03-20'
GROUP BY centro
me he complicado yo solo ya que creo que no es necesario utilizar tablas temporales ni nada.
__________________
Toni | blog
Responder Con Cita
  #3  
Antiguo 18-03-2010
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 21
tgsistemas Va por buen camino
tras utilizar el qry, añadiendo al sumatorio campos time (hh:mm:ss) he visto que
Código SQL [-]
select sum(hllmndo) as hllmndo_suma,
  sec_to_time(SUM(time_to_sec(hllmndo))) as hllmndo_sumaconvirtiendo
from tb03P

devuelven :
356900  37:29:00

atención a las funciones time_to_sec y sec_to_time

Soy novato con MySql pero entiendo, tras comprobar los datos y sumar los tiempos manualmente que la correcta es la opción convirtiendo a segundos, sumando y volviendo a convertir a formato hh:mm:ss pero me gustaría la confirmación de alguien con más experiencia al respecto.

Saludos y Muchas Gracias
__________________
Toni | blog
Responder Con Cita
  #4  
Antiguo 18-03-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
(esto es una vana traducción del manual de referencia de mysql, lastimosamente esta salvedad no está en la versión en español)

Las funciones SUM y AVG no trabajan bien con valores temporales (estas convierten los valores temporales a numeros, perdiendo todo aquello que se encuentre despues de un caracter no numerico). Para solucionar este inconvenuente, se puede convertir el valor temporal a unidades numericas, aplicar la función y volverla a convertir en el valor temporal. Ejemplo:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROM tbl_name;
SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROM tbl_name;

Referencia: http://dev.mysql.com/doc/refman/5.0/...functions.html
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #5  
Antiguo 19-03-2010
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 21
tgsistemas Va por buen camino
gracias movorack, entendimos lo mismo

entonces la qry es correcta con la segunda opción como pensaba
Código:
select sec_to_time(SUM(time_to_sec(hllmndo))) as hllmndo_sumaconvirtiendo
from tb03P
saludos y muchas gracias por la ayuda
__________________
Toni | blog
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tabla temporal local dfarias Conexión con bases de datos 4 23-08-2007 22:11:12
Hacer una consulta de una tabla a un grid e independizarla Parsec OOP 1 12-06-2007 17:26:54
Consulta de Union y tabla temporal en el nuevo Mysql 5.. ctronx MySQL 2 03-01-2006 16:57:41
Crear tabla ADO temporal Barzaugc Conexión con bases de datos 3 15-06-2005 10:13:00
Como crear una tabla temporal en memoria para reporte wereka SQL 5 01-03-2004 21:01:32


La franja horaria es GMT +2. Ahora son las 16:42:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi