Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

query za aktivnost korisnika u nekom intervalu

[es] :: MySQL :: query za aktivnost korisnika u nekom intervalu

[ Pregleda: 1516 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dsivic

Član broj: 188446
Poruke: 105



+2 Profil

icon query za aktivnost korisnika u nekom intervalu05.12.2011. u 13:09 - pre 150 meseci
Zdravo,

malo sam zaglavio, imam tri tabele: users, activities,useractivities

users tabela:
id
user

activities tabela:
id
activity

useractivities tabela:
id
activity_id
user_id
activity_date
... i jos neke dodatne kolone


znaci user moze imati vise aktivnosti...
treba mi lista korisnika koji nisu imali aktivnosti u zadnja tri mjeseca, kako??


 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: query za aktivnost korisnika u nekom intervalu05.12.2011. u 13:20 - pre 150 meseci
Prvo nađeš koji su bili aktivni u poslednja tri meseca:

Code (sql):

SELECT DISTINCT user_id
FROM useractivities
WHERE activity_date >= date_sub( curdate(), INTERVAL 3 months)
 


a onda oduzmeš od svih usera one koji su bili aktivni

Code (sql):

SELECT id
FROM users
MINUS
SELECT DISTINCT user_id
FROM useractivities
WHERE activity_date >= date_sub( curdate(), INTERVAL 3 months)
 
 
Odgovor na temu

dsivic

Član broj: 188446
Poruke: 105



+2 Profil

icon Re: query za aktivnost korisnika u nekom intervalu05.12.2011. u 13:28 - pre 150 meseci
znaci ipak se ne može riješiti jednim upitom?
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: query za aktivnost korisnika u nekom intervalu05.12.2011. u 13:36 - pre 150 meseci
Pa to i jeste jedan upit, samo sam ga uradio postupno, da bi razumeo.

Onaj drugi upit ti rešava stvar.

SELECT id
FROM users
MINUS
SELECT DISTINCT user_id
FROM useractivities
WHERE activity_date >= date_sub( curdate(), interval 3 months)

Naravno, može i na druge načine, ali mi ovaj deluje razumljivo za početnika...
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: query za aktivnost korisnika u nekom intervalu05.12.2011. u 13:49 - pre 150 meseci
A može i ovako:
Code:
SELECT u.id
FROM users u left outer join useractivities ua on (u.id=ua.user_id)
WHERE ua.activity_date >= date_sub( curdate(), interval 3 months) and ua.user_id is null;
 
Odgovor na temu

dsivic

Član broj: 188446
Poruke: 105



+2 Profil

icon Re: query za aktivnost korisnika u nekom intervalu05.12.2011. u 13:58 - pre 150 meseci
nije mi jasno kako dobiti u jednom query-u one koji nisu bili aktivni u zadnja tri mjeseca, sorry
 
Odgovor na temu

dsivic

Član broj: 188446
Poruke: 105



+2 Profil

icon Re: query za aktivnost korisnika u nekom intervalu05.12.2011. u 14:44 - pre 150 meseci
skonto sam, moze sa sub-selectom u WHERE dijelu sa user_id NOT IN (SELECT ....WHERE activity_date >= date_sub( curdate(), interval 3 months)),

JEL OK?
 
Odgovor na temu

[es] :: MySQL :: query za aktivnost korisnika u nekom intervalu

[ Pregleda: 1516 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.