Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ayuda con una consulta

Estas en el tema de Ayuda con una consulta en el foro de Mysql en Foros del Web. Hola a tod@s! tengo la siguiente consulta: SELECT semana, COUNT(DECODE(CREATEWEEK, SEMANA,1,NULL)) NewOpen, COUNT(DECODE(CLOSEWEEK, SEMANA,1,NULL)) Closed FROM V_DIM_SEMANA V, incidence I where (V.SEMANA = I.CREATEWEEK OR ...
  #1 (permalink)  
Antiguo 04/06/2008, 03:22
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Ayuda con una consulta

Hola a tod@s!
tengo la siguiente consulta:

SELECT semana, COUNT(DECODE(CREATEWEEK, SEMANA,1,NULL)) NewOpen, COUNT(DECODE(CLOSEWEEK, SEMANA,1,NULL)) Closed FROM V_DIM_SEMANA V, incidence I where (V.SEMANA = I.CREATEWEEK OR V.SEMANA = I.CLOSEWEEK) AND V.semana BETWEEN TO_CHAR(TO_DATE('01011990', 'DDMMYYYY'), 'YYYYWW') AND TO_CHAR(TO_DATE('04062008', 'DDMMYYYY'), 'YYYYWW') group by semana ORDER BY SEMANA

Esto me saca las incidencias que se han creado y cerrado en una semana, es decir, lo siguiente

semana abiertas cerradas
1 2 0
2 4 1
3 2 3

El problema que tengo es que si hay una semana que no se crea ni se cierra ninguna incidencia no se muestra la semana, simplemente se omite, y lo que quiero es que hiciese

semana abiertas cerradas
4 0 0


Alguien me puede ayudar?


Muchisimas gracias de antemano!!
  #2 (permalink)  
Antiguo 04/06/2008, 05:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ayuda con una consulta

Código:
SELECT TODAS.Semana as Semana,
            SUM(TODAS.NewOpen) as Abiertas,
            SUM(TODAS.Closed) as Cerradas
FROM
((SELECT V.semana as Semana, 
            COUNT(DECODE(I.CREATEWEEK, SEMANA,1,NULL)) as NewOpen, 
            0 as Closed 
  FROM V_DIM_SEMANA V LEFT JOIN incidence I 
                  ON V.SEMANA = I.CREATEWEEK 
  WHERE V.semana BETWEEN TO_CHAR(TO_DATE('01011990', 'DDMMYYYY'), 'YYYYWW') 
              AND TO_CHAR(TO_DATE('04062008', 'DDMMYYYY'), 'YYYYWW') 
  group by V.semana 
  ORDER BY V.SEMANA)
UNION ALL
(SELECT V2.semana as Semana, 
            0 as NewOpen, 
            COUNT(DECODE(I2.CLOSEWEEK, SEMANA,1,NULL)) as Closed 
  FROM V_DIM_SEMANA V2 LEFT JOIN incidence I2 
                  ON V2.SEMANA = I2.CLOSEWEEK) 
  WHERE V2.semana BETWEEN TO_CHAR(TO_DATE('01011990', 'DDMMYYYY'), 'YYYYWW') 
              AND TO_CHAR(TO_DATE('04062008', 'DDMMYYYY'), 'YYYYWW') 
  group by V2.semana 
   ORDER BY V2.SEMANA)) as TODAS
GROUP BY TODAS.Semana
ORDER BY TODAS.Semana; 
Entiendo que en V_DIM_SEMANA tienes todas las semanas, luego con LEFT JOIN consigues que las muestre todas. Espero que estes usando InnoDB con MyISAM no te funcionará.

Si quieres que te comente que he hecho, repregunta.

Acerca de join

Quim

Última edición por quimfv; 04/06/2008 a las 05:33
  #3 (permalink)  
Antiguo 04/06/2008, 05:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ayuda con una consulta

Salvo que yo esté muy equivocado, estás usando sintaxis y funciones de Oracle, no de MySQL.
Las funciones de conversión TO_CHAR y TO_DATE no existen en MySQL hasta la versión 6.0
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 04/06/2008, 06:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ayuda con una consulta

Cita:

Salvo que yo esté muy equivocado, estás usando sintaxis y funciones de Oracle, no de MySQL.
Las funciones de conversión TO_CHAR y TO_DATE no existen en MySQL hasta la versión 6.0
Posiblemente pero si la sentencia original le funciona, esta le funcionara igualmente y ademas le sacara los resultados que le faltan .... no?

Quim
  #5 (permalink)  
Antiguo 04/06/2008, 09:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ayuda con una consulta

No.
Ya lo probé, y MySQL no reconoce esas funciones.
Solamente le puede haber funcionado si la ejecutó sobre un servidor Oracle.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 05/06/2008, 03:25
 
Fecha de Ingreso: agosto-2007
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Ayuda con una consulta

Es cierto, perdonad por el despiste que se me ha ido la cabeza!!
ahora lo pongo en el foro de oracle

Gracias y perdonad
  #7 (permalink)  
Antiguo 05/06/2008, 05:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ayuda con una consulta

Mi modificación sobre tu consulta deberia funcionar en oracle. A eso me referia cuando conteste que si funcionaba la consulta inicial, la mia tiene que funcionar, puesto que no he agregado nada que no sea Sql estándar....

Si la original funcionaba en el motor que sea la modificación tiene que funcionar en el mismo motor.

Quim

Última edición por quimfv; 05/06/2008 a las 06:24
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:16.