2011-12-03 10 views
6

muszę wybrać memberid gdzie liczba logins jest większa niż 10Jak wybierać rekordy tylko, jeśli łączona tabela ma liczbę większą niż 10?

pisałem to zapytanie:

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

Jak mogę sprawdzić, czy liczba jest więcej niż 10?

Odpowiedz

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

Aby rozwiązać nowe zapytanie:

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

Dzięki Adam .. Myślę, że będę musiał użyć dwóch tabel, ponieważ to jest jeszcze bardziej skomplikowany .. – ppant

+0

Bez potrzeby łączenia, nie mówiąc już o LEWYCH DOŁĄCZACH. Byłoby to istotne, gdyby warunek był "mniejszy niż trzy loginy", ale nie "więcej niż trzy loginy". –

+0

@ Prashant Czy możesz zaktualizować swoje pytanie, aby odzwierciedlić dodatkową złożoność? Może to pozwolić na odpowiedź bliższą temu, co robisz. –

0

Zapytanie będzie podobny do tego,

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 
Powiązane problemy