Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2012, 09:23
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Mostrar aquellos casos que no han dado seguimiento en las últimas 48 horas...

Saludos,

Cree una aplicación que hace reportes de los clientes que tienen alguna avería en el teléfono y dsl. Cuando un caso requiere tiempo se deja abierto el ticket hasta que se resuelva el problema. En ese lapso de tiempo el cliente ha llamado y por cada llamada que haga el cliente se informa en el sistema como un nuevo ticket. La diferencia es que ese ticket se reporta como cerrado en vez de dejarlo abierto, ya que existe un reporte para ese.

Ya logré sacar el informe en una sola consulta de aquellos casos que llevan 3 ó más días abiertos y en las ultimas 48 horas han vuelto a dar seguimiento. Ahora quieren que muestre aquellos casos que llevan 3 ó más días abiertos pero no han dado seguimiento y este último mi cerebro no ha funcionado para mostrarlo en una sola consulta (si es que se puede claro está). Desde PHP lo puedo lograr muy fácil, pero me gustaría lograrlo en una sola consulta si es posible. Posteo algún ejemplo de lo que hice para les de una idea y si me pueden decir como lograrlo
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `test` (
  2.   `test_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  3.   `foo` varchar(1) NOT NULL,
  4.   `closed` int(1) NOT NULL,
  5.   `created_datetime` datetime NOT NULL,
  6.   PRIMARY KEY (`test_id`)
  7.  
  8. --
  9. -- Dumping data for table `test`
  10. --
  11.  
  12. INSERT INTO `test` (`test_id`, `foo`, `closed`, `created_datetime`) VALUES
  13. (1, 'a', 1, '2012-08-01 11:05:02'),
  14. (2, 'a', 1, '2012-08-07 11:05:11'),
  15. (3, 'a', 0, '2012-08-21 11:05:18'),
  16. (4, 'a', 1, '2012-08-28 11:05:24'),
  17. (5, 'a', 1, '2012-08-30 11:05:33'),
  18. (6, 'a', 1, '2012-08-31 11:05:39'),
  19. (7, 'b', 1, '2012-08-31 11:05:48'),
  20. (8, 'c', 1, '2012-08-08 11:05:53'),
  21. (9, 'c', 0, '2012-08-27 11:06:01'),
  22. (10, 'd', 0, '2012-08-27 11:06:10'),
  23. (11, 'd', 1, '2012-08-28 11:06:23'),
  24. (12, 'e', 0, '2012-08-26 11:07:24'),
  25. (13, 'f', 0, '2012-08-13 11:13:35'),
  26. (14, 'f', 1, '2012-08-30 11:13:40');

La consulta que hago es
Código MySQL:
Ver original
  1. SELECT tt.foo, COUNT(tt.foo) counter FROM test t
  2.   INNER JOIN test tt ON tt.foo = t.foo
  3. WHERE t.closed = 0
  4.   AND DATE_FORMAT(t.created_datetime, "%Y-%m-%d") <= '2012-08-28'
  5.   AND DATE_FORMAT(tt.created_datetime, "%Y-%m-%d") BETWEEN '2012-08-29' AND '2012-08-31'
  6. GROUP BY tt.foo
  7.  
  8. +-----+---------+
  9. | foo | counter |
  10. +-----+---------+
  11. | a   |       2 |
  12. | f   |       1 |
  13. +-----+---------+
  14. 2 rows in set (0.00 sec)

Ahora la que debe ser, debe retornar aquellos casos que llevan más de 3 días abiertos y no han dado seguimiento en un periodo de 48 horas desde el día de hoy.

Bueno sigo intentando a ver si lo logro

¡Gracias por su tiempo!
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos