Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] wyciąganie ostatniego rekordu po dacie
b79
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.02.2010

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
blade-mrn
post
Post #2





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

Ostrzeżenie: (0%)
-----


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.


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on to właśnie robi."
Albert Einstein
Go to the top of the page
+Quote Post
neverever
post
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


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


--------------------
neverever
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:10