Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2012
LuisAlf:: LuisAlf:: is offline
Miembro
 
Registrado: nov 2009
Posts: 60
Poder: 15
LuisAlf:: Va por buen camino
Consulta confusa

Hola a todos los programadores!...

Disculpenme si no es correcto el titulo de mi hilo, pero no supe como ponerle...

Tengo un problema con una consulta que no me quiere salir...
Les planteo mi situación:

Tengo una BD hecha en Access...

Uso una tabla llamada "HistorialManifiestos" en la cual tengo los campos: "destino", "material","cantidad","fecha" (solo muestro los campos pertinentes a mi consulta)
El proceso involucrado es que se almacena a la tabla todo el material que se embarca junto con la cantidad, el destino y la fecha en que salio.

Tengo un query en access llamado: "sins" que lo uso como una tabla, en el tengo los campos "material" y "valor".

En resumen... con estas dos "tablas" realizo una consulta que me hace una operacion... para obtener un resultado agrupado por destino...

Código SQL [-]
SELECT destino, Sum(cantidad*valor/100) AS HORAS,
    FROM HistorialManifiestos, sins
       WHERE HistorialManifiestos.material=sins.material
          GROUP BY destino;

Todo bien hasta aquí... pero ahora lo que me piden es que obtenga la suma de los dias que se embarcaron por destino
(aqui lo que hice es hacer una consulta con un distinct a las fechas(se repiten registros con la misma fecha) y despues un count:
Código SQL [-]
SELECT destino, count (*) AS dias
   FROM (SELECT DISTINCT (fecha), destino
               FROM HistorialManifiestos
                  GROUP BY destino, fecha)
     GROUP BY destino;
) para dividir las "HORAS" (primera consulta) entre los dias (segunda consulta) y agrupar el resultado por destino. Pero no se como ligar estas dos consultas...

O alguien con más experiencia tiene una mejor idea de hacer esto porque a mi no me da para mas...

Espero haberme explicado y porfavor que alguien me ayude!

Gracias por su tiempo!

PD. Estas consultas las estuve probando en Access... para despues hacerlas en Delphi.
Responder Con Cita
  #2  
Antiguo 01-10-2012
Avatar de Young
Young Young is offline
Miembro
 
Registrado: abr 2006
Ubicación: San Felipe, Chile
Posts: 86
Poder: 19
Young Va por buen camino
Hola Luis, en primer lugar las consultas las haría de otra manera, bueno la verdad es cosa de cada uno:

Código SQL [-]
SELECT HistorialManifiestos.destino, SUM(HistorialManifiestos.valor * sins.valor / 100) AS HORAS
FROM HistorialManifiestos
INNER JOIN sins ON (HistorialManifiestos.material = sins.material)
GROUP BY HistorialManifiestos.destino;

Me parace que la segunda consulta es más sencilla de lo que crees (puedo estar equivocado en mi aproximación)
Código SQL [-]
SELECT HistorialManifiestos.destino, count(HistorialManifiestos.fecha)
FROM HistorialManifiestos
GROUP BY HistorialManifiestos.destino;

Ahora para solucionar tu problema, te propondría hacer un procedimiento almacenado seleccionable, esto quiere decir que pueda devolver valores como en una tabla, por lo tanto usarlo con un select. Entonces con estas dos consultas recolectas los datos y los armas en el procedimiento.

Edito: Oops! veo que tu db es en access y hasta donde yo sé no existen los procedimientos almacenados.

Espero que te oriente un poco.

Última edición por Young fecha: 01-10-2012 a las 04:15:40.
Responder Con Cita
  #3  
Antiguo 01-10-2012
LuisAlf:: LuisAlf:: is offline
Miembro
 
Registrado: nov 2009
Posts: 60
Poder: 15
LuisAlf:: Va por buen camino
Hola Young, la razon por la que tengo la segunda consulta asi es porque puede existir mas de un registro con el mismo destino y la misma fecha por eso utilizo el distinct primero y despues aplico un count... lo quise intentar asi: count(distinct(fecha)) pero no funcionó.

La verdad ya he intentado combinar las consultas pero no puedo... no se como plantear la union... he intentado hacer algo asi pero me salen errores:
Código SQL [-]
SELECT Sum(quantity*pp/100)/dias in(segunda consulta)


La verdad ya no se como proceder...
Responder Con Cita
  #4  
Antiguo 01-10-2012
Avatar de Young
Young Young is offline
Miembro
 
Registrado: abr 2006
Ubicación: San Felipe, Chile
Posts: 86
Poder: 19
Young Va por buen camino
Sabes aún no termino de entender bien, pero si lo que quieres es los embarques por destinos y por días lo haría así:

Código SQL [-]
SELECT HistorialManifiestos.destino, HistorialManifiestos.fecha, count(HistorialManifiestos.fecha)
FROM HistorialManifiestos
GROUP BY HistorialManifiestos.destino, HistorialManifiestos.fecha
ORDER BY HistorialManifiestos.destino, HistorialManifiestos.fecha;

Suerte.
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
consulta sobre una consulta :D PablorD MySQL 4 02-06-2010 21:59:51
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Consulta dentro de otra consulta judit25 Conexión con bases de datos 1 25-06-2007 15:52:15
consulta sobre consulta superhopi SQL 2 16-05-2003 19:01:47
Funcion algo confusa pipo Conexión con bases de datos 2 12-05-2003 17:28:07


La franja horaria es GMT +2. Ahora son las 18:57:43.


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