Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] wyciąganie ostatniego rekordu po dacie
Forum PHP.pl > Forum > Przedszkole
b79
Witam wszystkich

nowy dzień = nowy problem smile.gif

zapisuje do bazy 3 informacje

sid, fetch_date, wartość

dane zapisują się w takiej postaci:

3 1264508965 1
4 1264508966 6
4 1264508966 7
itd

potrafię sobie wylistować unikalne wartości dla danego sida (dużo wyników - codziennie dopisuje się jeden rekord, w którym sid jest stały, a zmiania się data i wartość)

Pytanie jako powinno wyglądać zapytanie SQL a może PHP które analizowało by datę i wynikiem był tylko najświeższy rekord, względem daty serwera.

ewentualnie jakby ktoś był na tyle miły i nakierował jak wyciągnąć średnią wartość z jakiegoś okresu np. 30 dni.

siedze nad tym już jakiś czas ale nie mam pomysłu jak ta datę rozłożyć na łopatki.

skleciłem takie polecenie sql
  1. SELECT `google_ranking` FROM `dynamic_data` WHERE sid = 3 ORDER BY `fetch_date` DESC LIMIT 1


nie jest to na pewno optymalne rozwiązanie ale zwraca wynik który chce, teraz pytanie jak to podpiąć pod php żeby to się wyswietlało tylko gdy sid z dynamic_data = id z static_data

prosze o jakieś podpowiedzi jak to powinno byc zrobione w stylu powinienes podipąc to wykorzystać to i to, chociaż podpowiedziamy z gotowym kodem równiez nie pogardze biggrin.gif

blade-mrn
Witam,
Z tym porównaniem "dynamic_data = id z static_data" nie widzę problemu bo jak już wyciągniesz interesujący cię rekord z bazy to wystarczy zwykła instrukcja warunkowa która to sprawdzi i wyświetli bądź nie.
Co do tej średniej z 30 dni to zakładając że zapytanie do bazy będziesz miał takie jak zaprezentowałeś to wystarczy zczytać rekordy z 30 ostatnich dat (mam tu na myśli tak jak by 30 zmian tej wartości fetch_date aby cofnąć się o te 30 dni, bo zakładam że dodajesz wiele rekordów jednego dnia), bo przecież masz je ułożone chronologicznie. Ja bym to zrobił za pomocą pętli w PHP i odpowiedniego warunku.
neverever
ja bym raczej na php nie przerzucał tego co na poziomie samego zapytania mozna już zrobić.

jeżeli chcesz wybrać z bazy rekordy z jakiegoś okresu, dajmy 10 ostatnich dni - to stosujesz DATE_SUB + INTERVAL

Polecam lekturkę http://dev.mysql.com/doc/refman/5.1/en/dat...-functions.html
-znajdziesz tam gotowe przyklady w opisie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.