Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2013, 23:48
esneideramy
 
Fecha de Ingreso: agosto-2013
Ubicación: Medellín
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta ¿Cómo validar si múltiples registros existen en una tabla?

¡Hola! Soy nuevo en el foro, por lo tanto pido disculpas si algo de mi pregunta les pueda incomodar. antes que nada quiero que tengan en cuenta que ya busqué en Google posibles soluciones a mi pregunta, pero nada he podido solucionar, así que probaré si aquí llego a una solución exitosa con ayuda de ustedes.

Pasa lo siguiente: tengo una tabla en MySQL en la que guardo el historial de conexión de mis usuarios, asgo así:

_______________________________________
............. connectionhistory.................|
_______________________________________
userId.........|..........Date.................... |
______________________________________|
337.............| 2013-08-16 16:42:52 |
337.............| 2013-08-17 16:42:52 |
338.............| 2013-08-18 16:42:52 |
339.............| 2013-08-18 16:42:52 |
340.............| 2013-08-18 16:42:52 |
______________________________________|


Quiero obtener toda la información que haya en un rango de fecha por ejemplo:
Código MySQL:
Ver original
  1. SELECT * FROM connectionhistory
  2. WHERE Date >= '2013-08-17 16:42:52'
  3. AND Date <= '2013-08-18 16:42:52'

ésta consulta me devolvería:
337 | 2013-08-17 16:42:52 |
338 | 2013-08-18 16:42:52 |
339 | 2013-08-18 16:42:52 |
340 | 2013-08-18 16:42:52 |

Ahora, lo que quiero hacer es un poco mas complejo: quiero que solo me retorne éstos datos, en el mismo rango de fecha, pero que no me retorne una fila, si su userId ya se encuentra registrado en una fecha anterior a la fecha menor (inicial) de mi consulta.

he intentado lo siguiente:
Código MySQL:
Ver original
  1. SELECT DISTINCT @usr:=userId, Date FROM connectionhistory
  2. WHERE not EXISTS (SELECT userId FROM connectionhistory
  3.                                 WHERE usrID = @usr
  4.                                 AND  Date < '2013-08-17 16:42:52')
  5. AND Date >= '2013-08-17 16:42:52'
  6. AND Date <= '2013-08-18 16:42:52';

Necesito que me retorne lo siguiente:
338 | 2013-08-18 16:42:52 |
339 | 2013-08-18 16:42:52 |
340 | 2013-08-18 16:42:52 |

ya que el userId = 337, ya se encontraba registrado en la tabla, en una fecha anterior a: 2013-08-17 16:42:52, la cual es la fecha inicial de mi rango de consulta.

como nota final, mi deseo es hacer esto en una consulta o procedimiento almacenado en MySQL, se que podría obtener los datos del rango de fecha, y luego (con php) comprobar si cada uno de los userId se encuentran en la tabla en una fecha anterior a la del rango que deseo

Última edición por gnzsoloyo; 01/09/2013 a las 06:31