Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-12-2009
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 20
ingmichel Va por buen camino
El Problema Persiste

HOLA COMPAÑERO GRACIAS POR TU RESPUESTA, REALICE EL QUERY COMO ME INDICASTE UTILIZANDO EL UNION Y ME PERSISTE EL MISMO PROBLEMA, ES DECIR LA CONSULTA ME DEVULVE DOS COLUMNAS QUE SON

NAVIERA_SOLIC TOTAL_SOLICITUDES


PERO LO QUE REQUIERO ES QUE EL QUERY ME DEVUELVA TRES COLUMNAS QUE SON

NAVIERA_SOLIC TOTAL_SOLICITUDES Y TOTAL_PROCESADAS


donde total_solicitudes corresponde al primer count, y el total_procesadas corresponde a aquellas solicitudes que su status_cm sea procesada, NO SE SI ME DOY A ENTENDER, COMO LE HAGO PARA HACER ESTO ?....
Responder Con Cita
  #2  
Antiguo 04-12-2009
Avatar de Axel_Tech
Axel_Tech Axel_Tech is offline
Miembro
 
Registrado: nov 2008
Ubicación: lugar en que está ubicado algo.
Posts: 85
Poder: 18
Axel_Tech Va por buen camino
Los cálculos de los COUNTS si que los hace bien, sólo que en vez de mostrártelo en columnas te lo muestra en filas o registros
Mmmm... Para obtener la consulta que quieres puedes utilizar 2 consultas diferentes, una para cada COUNT, metiendo el resultado en 2 tablas temporales: en una metes los registros de la consulta de TOTAL_SOLICITUDES y en la otra los registros de la consulta de TOTAL_PROCESADAS.
Luego haces un INNER JOIN entre las 2 uniendo por naviera_SOLIC y saldrá como tú quieres. Sería algo así:
Código SQL [-]
SELECT TABLA_TEMP_1.naviera_SOLIC, TABLA_TEMP_1.TOTAL_SOLICITUDES, TABLA_TEMP_2.TOTAL_PROCESADAS 
FROM TABLA_TEMP_1 INNER JOIN TABLA_TEMP_2 
ON TABLA_TEMP_1.naviera_SOLIC=TABLA_TEMP_2.naviera_SOLIC
__________________
No hope, no dreams, no love, my only escape is Underground
Responder Con Cita
  #3  
Antiguo 04-12-2009
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 20
ingmichel Va por buen camino
exactamente

hola hermano, hice lo k me dijiste con las dos consutas y resultó perfectamente bien, muchas gracias por tu ayuda y k dios te bendiga.






"el conocimiento es un don que crece a medida que se comparte".
Responder Con Cita
  #4  
Antiguo 07-12-2009
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 20
ingmichel Va por buen camino
Nuevo Problema

Hola Como Estas, Aunque Se Resolvio El Problema De Los Count, Ahora Surge Un Problema Nuevo, Se Trata De Que Si Por Ejemplo Hay Una Naviera K No Tiene Status_cm='procesada' El Query Saca A La Naviera Del Grupo, En Lugar De Ponerle Un Cero, Me Explico
Si Por Ejemplo Tengo

Naviera Solic Total_solicitudes, Total_procesadas
Naviera X 9 0


Entones En El Group By No Me Aparece La Naviera X, Es Como Si Para El Query No Existiera, Lo Que Kiero Es K El Query Me Presente La Informacion Aunque No Haya Totales Con Status_cm, Y Que En Lugar De Sacarlo Del Grupo Me Presente A Naviera_solic,total_solicitudes, Y Total_procesadas=0 En Caso De No Tener Ningun Status_cm='procesada', Creo K Esta Un Poco Enrredado...
Responder Con Cita
  #5  
Antiguo 09-12-2009
Avatar de Axel_Tech
Axel_Tech Axel_Tech is offline
Miembro
 
Registrado: nov 2008
Ubicación: lugar en que está ubicado algo.
Posts: 85
Poder: 18
Axel_Tech Va por buen camino
En ese caso vas a tener que cambiar un poco las consultas. En vez de hacer los COUNT antes de insertarlos en las tablas temporales, hay que hacerlos después. Me explico:

supongo que tienes algo así:
Código SQL [-]
INSERT INTO TABLA_TEMP_1(naviera_SOLIC, total_solicitudes)
select  naviera_SOLIC, count(DISTINCT NO_COMUNICACION) as total_solicitudes
from MI_VISTA
group by naviera_SOLIC

ahora tienes que meter todos los registros en vez de directamente el valor del COUNT:
Código SQL [-]
INSERT INTO TABLA_TEMP_1(naviera_SOLIC, total_solicitudes)
select  naviera_SOLIC, NO_COMUNICACION as total_solicitudes
from MI_VISTA
group by naviera_SOLIC

lo mismo para cuando STATUS_CM='PROCESADA'. Y por último harías los COUNT en las tablas temporales:
Código SQL [-]
SELECT TABLA_TEMP_1.naviera_SOLIC, COUNT(TABLA_TEMP_1.TOTAL_SOLICITUDES), COUNT(TABLA_TEMP_2.TOTAL_PROCESADAS)
FROM TABLA_TEMP_1 LEFT JOIN TABLA_TEMP_2
ON TABLA_TEMP_1.naviera_SOLIC=TABLA_TEMP_2.naviera_SOLIC
GROUP BY TABLA_TEMP_1.naviera_SOLIC

Fíjate que ahora en vez de hacer un INNER JOIN, hacemos un LEFT JOIN, para hacer que el campo por el que cuente sea el de la tabla del lado izquierdo del JOIN, o sea TABLA_TEMP_1. De esa forma los que no existan en TABLA_TEMP_2 los COUNT mostrarán 0.
__________________
No hope, no dreams, no love, my only escape is Underground

Última edición por Axel_Tech fecha: 09-12-2009 a las 13:16:20.
Responder Con Cita
  #6  
Antiguo 09-12-2009
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 20
ingmichel Va por buen camino
Efectivamente

EL PROBLEMA SE SOLUCIONO, REEMPLACE EL INNER JOIN POR UN LEFT JOIN Y CON ESO QUEDO RESUELTO, ENTONCES TAMBIEN PUSE LA FUNCION ISNULL(TOTA_PROCESADAS,0) PARA SI EN CASO NO EXISTA PROCEDAS ME DEVUELVA UN CERO Y ESO ERA TODO, MUCHAS GRACIAS NUEVAMENTE POR TU AYUDA, CUIDATE MUCHO Y HASTA PRONTO HERMANO...


Cita:
Empezado por Axel_Tech Ver Mensaje
En ese caso vas a tener que cambiar un poco las consultas. En vez de hacer los COUNT antes de insertarlos en las tablas temporales, hay que hacerlos después. Me explico:

supongo que tienes algo así:
Código SQL [-]INSERT INTO TABLA_TEMP_1(naviera_SOLIC, total_solicitudes) select naviera_SOLIC, count(DISTINCT NO_COMUNICACION) as total_solicitudes from MI_VISTA group by naviera_SOLIC


ahora tienes que meter todos los registros en vez de directamente el valor del COUNT:
Código SQL [-]INSERT INTO TABLA_TEMP_1(naviera_SOLIC, total_solicitudes) select naviera_SOLIC, NO_COMUNICACION as total_solicitudes from MI_VISTA group by naviera_SOLIC


lo mismo para cuando STATUS_CM='PROCESADA'. Y por último harías los COUNT en las tablas temporales:
Código SQL [-]SELECT TABLA_TEMP_1.naviera_SOLIC, COUNT(TABLA_TEMP_1.TOTAL_SOLICITUDES), COUNT(TABLA_TEMP_2.TOTAL_PROCESADAS) FROM TABLA_TEMP_1 LEFT JOIN TABLA_TEMP_2 ON TABLA_TEMP_1.naviera_SOLIC=TABLA_TEMP_2.naviera_SOLIC GROUP BY TABLA_TEMP_1.naviera_SOLIC


Fíjate que ahora en vez de hacer un INNER JOIN, hacemos un LEFT JOIN, para hacer que el campo por el que cuente sea el de la tabla del lado izquierdo del JOIN, o sea TABLA_TEMP_1. De esa forma los que no existan en TABLA_TEMP_2 los COUNT mostrarán 0.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Impresion de group header group footer Manuel Impresión 3 11-11-2007 01:05:23
Clausula Like JoseAntonio SQL 5 27-05-2007 07:28:47
Clausula LIKE federiconqn21 SQL 3 28-12-2005 15:49:13
consultas anidadas: group by dentro otro group by DobleSiete SQL 7 31-01-2005 14:59:31
Group Header, Detail y Footer Group en la misma pagina MarcelRuz Impresión 0 20-04-2004 23:27:14


La franja horaria es GMT +2. Ahora son las 09:26:52.


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