Jak sprawdzić czy user logowal sie przynajmniej raz w ciagu ostatnich 5 dni ?

0

Mam prosta tabele

Id id_users date_login
1 1 2014-05-11
1 1 2014-05-12
1 1 2014-05-13
1 1 2014-05-14
1 1 2014-05-14
1 1 2014-05-14
1 1 2014-05-15
1 1 2014-05-15

Nie wiem ja zrobic zapytanie żeby sprawdzić czy user sie logował przynajmniej raz w ciagu ostatnich 5 dni ?

0

Na przykład tak: Obliczę datę jaka była 5 dni temu i sprawdź czy liczba logowań, których data jest późniejsza jest różna od zera.

0

tak najszybciej i najprościej w MSSQL
SELECT *
FROM nazwa_tabeli WHERE date_login > '2014-05-16'

0

Ale logowac sie mozna dziennie kilka razy wiec to musze cos innego wymyslec chyba

0

Ale dlaczego coś innego?
Zgodnie z tematem @blkinc zapisał zapytanie, które wyczerpuje temat.
Logowanie w ciągu ostatnich 5ciu dni.

Do bazy zapisywana jest data ostatniego logowania.
Więc, za każdym razem gdy użytkownik się loguje zapisywana data ostatniego poprawnego logowania. Nie ma znaczenia o której godzinie się logował i ile razy to zrobił. Ostatni raz jest wiążący i ważny w kontekście zadania.

0
pitu7dg napisał(a):

Logowanie w ciągu ostatnich 5ciu dni.

Nie w ciągu 5 dni tylko PRZYNAJMNIEJ RAZ w ciagu ostatnich pięciu dni od dnia dzisiejszego. Jezeli user sie logowal wczoraj 10 razy i przed wczoraj 10 razy to ja nie chce wyniku ze wyswietli mi ze sie logowal 20 razy w sumie tylko czy w kazdym z poprzednich dni przynajmniej raz. Jesli tak to dostaje w grze bonus. I nie wiem jak to wlasnie zrobic czy ze jak sie loguje to system patrzy czy wczoraj sie logowal jesli tak zapisuje licznik + 1 a jesli nie licznik sie zeruje. I przy lgoowaniu jesli licznik = 5 to daj bonus i zresetuj licznik. bo nie wiem jak na bazie by to zrobic.

0

Tzn. chodzi o to, czy logował się CODZIENNIE PRZEZ 5 ostatnich dni?

0

@masterO po pierwsze w temacie źle określiłeś problem: "Jak sprawdzić czy user logowal sie przynajmniej raz w ciagu ostatnich 5 dni ?" - oznacza że wystarczy jedno logowanie w ciągu tych 5 dni aby warunek był spełniony.

W swoim ostatnim poście sam sobie przeczysz :

Nie w ciągu 5 dni tylko PRZYNAJMNIEJ RAZ w ciagu ostatnich pięciu dni od dnia dzisiejszego

to nie to samo co

nie chce wyniku ze wyswietli mi ze sie logowal 20 razy w sumie tylko czy w kazdym z poprzednich dni przynajmniej raz

Nie mam doświadczenia z postgresql ale w MySQL rozwiązał bym to tak:

SELECT CASE WHEN COUNT(DISTINCT date_login)=5 THEN 'OK' ELSE 'NOT OK' END RESULT
FROM test
WHERE date_login BETWEEN DATE(DATE_ADD(NOW(), INTERVAL -4 DAY)) AND NOW()
1

W postgresie coś takiego wywnioskowałem

select count(distinct( added::date)) from last_login where email = '1' AND added::date >= now()::date - interval '5 days';

1 użytkowników online, w tym zalogowanych: 0, gości: 1