2011-12-03 14 views
6

necesito para seleccionar el memberid donde recuento de logins es mayor de 10¿Cómo seleccionar registros solo si la tabla unida tiene un conteo mayor a 10?

escribí esta consulta:

SELECT COUNT(DISTINCT(member.member_id)) 
FROM member 
LEFT JOIN location_member ON (member.member_id = location_member.member_id) 
WHERE Month(FROM_UNIXTIME(member.r_date)) = 11 
    AND Year(FROM_UNIXTIME(member.r_date)) = 2011 
    AND FROM_UNIXTIME(member.r_date, '%d') = 28 
    AND member.pc_address_validated <> 1 
    **OR (if checkins > 10)** 

¿Cómo puedo comprobar si la cuenta es más de 10?

Respuesta

7
SELECT memberId 
FROM checkin 
GROUP BY memberId 
HAVING COUNT(1) > 3 

Para hacer frente a su nueva consulta:

SELECT member.member_id 
FROM member 
INNER JOIN checkins ON member.member_id = checkins.member_id 
LEFT JOIN location_member ON (member.member_id = location_member.member_id) 
WHERE Month(FROM_UNIXTIME(member.r_date)) = 11 
    AND Year(FROM_UNIXTIME(member.r_date)) = 2011 
    AND FROM_UNIXTIME(member.r_date, '%d') = 28 
    AND member.pc_address_validated <> 1 
GROUP BY member.member_id 
HAVING COUNT(1) > 10 
+0

Gracias adam .. creo que voy a tener que usar las dos tablas porque es aún más complejo. – ppant

+0

Sin necesidad de unirse, mucho menos una unión IZQUIERDA. Eso sería relevante si la condición fuera 'menos de tres inicios de sesión' pero no para 'más de tres inicios de sesión'. –

+0

@Prashant ¿Podría actualizar su pregunta para reflejar la complejidad adicional? Esto puede permitir respuestas más cercanas a lo que estás haciendo. –

0

la consulta será similar a este,

select ck.memberId,ck.login from Member m join 
CheckIn ck on m.id = ck.memberId 
group by ck.memberId, ck.login having count(ck.login) > 3 
Cuestiones relacionadas