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

Subconsulta para contar registros

Estas en el tema de Subconsulta para contar registros en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/08/2010, 10:05
 
Fecha de Ingreso: marzo-2009
Mensajes: 47
Antigüedad: 15 años, 1 mes
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!

Etiquetas: contar, registros, subconsulta
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 21:08.