2011-12-03 26 views
6

tôi cần phải chọn memberid nơi đếm logins lớn hơn 10Làm cách nào để chỉ chọn bản ghi nếu bảng đã tham gia có số lượng lớn hơn 10?

tôi đã viết truy vấn này:

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)** 

Làm thế nào tôi có thể kiểm tra nếu tính là hơn 10?

Trả lời

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

Để giải quyết truy vấn mới của bạn:

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

Cảm ơn adam .. Tôi nghĩ rằng tôi sẽ phải sử dụng hai bảng bởi vì nó thậm chí còn phức tạp hơn .. – ppant

+0

Không cần tham gia, hãy để một mình LEFT JOIN. Điều đó sẽ có liên quan nếu điều kiện là 'ít hơn ba lần đăng nhập' nhưng không phải là 'nhiều hơn ba lần đăng nhập'. –

+0

@Prashant Bạn có thể cập nhật câu hỏi của mình để phản ánh sự phức tạp bổ sung không? Điều này có thể cho phép câu trả lời gần hơn với những gì bạn đang làm. –

0

truy vấn của bạn sẽ tương tự như sau,

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 
Các vấn đề liên quan