Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2016, 04:31
Avatar de X3mdesign
X3mdesign
 
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
Filtrar tabla creada sobre últimos registros agrupados

Muy buenas, no sabía cómo poner el asunto... espero haber sido claro...

Tengo una tabla donde almaceno las solicitudes de revisión de un usuario, almaceno el id_usuario a revisar, la fecha, quién realiza la petición (id_admin) y un texto descriptivo. El estado puede ser 1 ó 0. Y lo que quier es saber en qué fecha se hizo la última solicitud y de qué estado es para poder mostrar sólo las que su estado = 1.

Os cuento, gracias a este aporte de jurena, en 2013, Seleccionar solo ultimo registro por fecha de un grupo previamente seleccionado, he podido entender cómo montar la query, pero ahora me viene una duda, ¿cómo podría sacar sólamente los que tengan un estado determinado? ¿cómo ordenar la tabla por fecha?

Se me ha ocurrido el grabar esos datos cada vez que se realice la consulta en una tabla "cache" para poder hacer un select sencillo de la tabla, pero no se si es el método más correcto. Entiendo que la tabla habría que vaciarla cada vez que se realice la consulta y no creo que sea lo más óptimo.

Esta sería mi tabla:
[CODE]
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `usuarios_revisiones` (
  2.   `id` int(11) NOT NULL,
  3.   `id_admin` int(11) NOT NULL,
  4.   `id_usuario` int(11) NOT NULL,
  5.   `estado` tinyint(1) NOT NULL DEFAULT '0',
  6.   `observaciones` mediumtext COLLATE latin1_general_ci NOT NULL
  7. ) ENGINE=InnoDB AUTO_INCREMENT=358 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Esta sería mi query:
Código MySQL:
Ver original
  1. SELECT t1.id_paciente, t1.fecha_hora, t1.estado
  2.  FROM (SELECT id_paciente, fecha_hora, estado FROM pacientes_revisiones ORDER BY id_paciente, fecha_hora DESC) t1
  3. GROUP BY t1.id_paciente

Y si la pongo así, me muestra el último estado=1 de cada paciente, aunque tenga estados=0 posteriormente añadidos:
Código MySQL:
Ver original
  1. SELECT t1.id_paciente, t1.fecha_hora, t1.estado
  2.  FROM (SELECT id_paciente, fecha_hora, estado FROM pacientes_revisiones ORDER BY id_paciente, fecha_hora DESC) t1
  3. WHERE t1.estado=1
  4.  GROUP BY t1.id_paciente


Muchas gracias!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour

Última edición por gnzsoloyo; 27/01/2016 a las 06:28 Razón: Sin etiquetar