Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/08/2010, 10:05
eagleoneraptor
 
Fecha de Ingreso: marzo-2009
Mensajes: 47
Antigüedad: 16 años
Puntos: 0
Subconsulta para contar registros

Hola, tenía una pregunta sobre una consulta en MySQL, paso a explicar:

Yo tengo una tabla usuarios y otra acciones, en la tabla acciones hay una lista de las acciones que realizaron los usuarios, con la fecha en que se realizo la acción

Las tablas serían algo así:
usuarios
id
nombre

acciones
id
id_usuario
fecha

Yo lo que quiero obtener son los usuarios que realizaron la última acción hace mas de 2 días o que no tienen acciones (no me interesan las acciones en si), lo que intente hacer es algo así:

Código MySQL:
Ver original
  1. SELECT * FROM usuarios WHERE
  2. (SELECT MAX(fecha) FROM acciones WHERE id_usuario=usuarios.id) < DATE_SUB(NOW(), INTERVAL 2 DAY)

El problema de esta consulta es que me devuelve solo los usuarios que realizaron la acción hace mas de 2 días pero no los que no tienen acciones, ya que me di cuenta que el SELECT MAX(fecha) devuelve NULL y la comparación también lo hace, yo pensaba que iba a tomar una fecha 0000-00-00 00:00:00, pero parece que no, entonces la consulta me la replanteé así:

Código MySQL:
Ver original
  1. SELECT * FROM usuarios WHERE
  2. (SELECT COUNT(*) FROM acciones WHERE id_usuario=usuarios.id) = 0
  3. (SELECT MAX(fecha) FROM acciones WHERE id_usuario=usuarios.id) < DATE_SUB(NOW(), INTERVAL 2 DAY)

Pero no se si está del todo bien, recorrer 2 veces los mismos registros por usuario.

¿Se les ocurre alguna manera mejor de hacer la consulta o creen que así marcha bien?

Gracias de antemano.
Un Saludo!