Skocz do zawartości
crazyluki

[sql] problem

Polecane posty

Witam,

posiadam mały problem z SQL którego nijak nie mogę rozwikłać.

posiadam tabele w której mam następujące kolumny:

id (int)

user-id (int)

date (date)

licznik (int)

 

do tabeli dla każdego użytkownika raz dziennie dodawany jest nowy rekord z aktualną datą oraz wartością licznik (int).

mam nastepujący problem ( i chciałby go rozwiązać na poziomie SQL a nie kodu php). Chciałbym pobrać dodatkową informację tj wartość poprzedniego rekordu licznik i sprawdzić jaki jest przyrost tego dnia.

 

Wiem że dla pierwszego rekordu będzie błąd albo 0 bo nie ma poprzedniego rekordu;-)

 

silnik bazy danych to mysql jakby ktoś miał jakieś specyficzne zapytanie;-)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ale przyrost dla konkretnego usera? Chyba chodzi Ci o rekord z poprzedniego dnia dla danego usera ;)

Bo nie bardzo rozumiem, jak chcesz dla niego obliczyć jakiśtam przyrost, skoro w poprzednim rekordzie będzie inny user.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

do tabeli dla każdego użytkownika raz dziennie dodawany jest nowy rekord z aktualną datą oraz wartością licznik (int).

mam nastepujący problem ( i chciałby go rozwiązać na poziomie SQL a nie kodu php). Chciałbym pobrać dodatkową informację tj wartość poprzedniego rekordu licznik i sprawdzić jaki jest przyrost tego dnia.

Wydaje mi się( o ile dobrze zrozumiałem meritum), że to niemożliwe bez dopisania kilku linijek kodu PHP.

 

Wiem że dla pierwszego rekordu będzie błąd albo 0 bo nie ma poprzedniego rekordu;-)

Ustaw default dla pola licznik na 0 i nie będzie błędu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
SELECT today.licznik-yesterday.licznik 
  FROM tabela today, tabela yesterday 
  WHERE today.licznik = CURRENT_DATE AND 
    	yesterday.licznik = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY);

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

SELECT t1.`user-id`,t1.licznik-t2.licznik AS przyrost 
 FROM test AS t1, test AS t2 
 WHERE t1.`user-id`=t2.`user-id`
  	  	AND t1.data=CURRENT_DATE 
          	AND t2.data=DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY)

 

PS. Nie używaj jako nazwy pół nazw które są nazwami typów (w tym wypadku date)

 

@ahes:

Jeszcze trzeba te dane złączyć po user-id

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zaloguj się, aby skomentować

Będziesz mógł dodać komentarz po zalogowaniu się



Zaloguj się

×