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

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×