Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]pobieranie najblizszej/najdalszej daty
Forum PHP.pl > Forum > Przedszkole
swiru_
Witam,

Mam tabele w ktora wrzucam dane: NAZWA | DATA DODANIA | DATA WYGASNIECIA

powiedzmy ze cos bedzie wyswietlane na stronie do dnia zawartego w DATA WYGASNIECIA

w bazie jest kilka wpisow z roznymi datami wygasniecia,

1) jak sformuowac zapytanie, ktore wyciagnie rekord z najblizsza data wygasniecia np. dzis jest 2010-06-23, najblizsza data wygasniecia to 2010-06-24

2) jak sformuowac zapytanie do najdalszej daty??

dzieki za pomoc

nospor
warunkiem okreslasz warunek, ze data wygasniecia ma byc wieksza od dzisiejszej
a przy pomocy GROUP BY oraz MIN pobierasz date co cię interesuje
haahh
Wydaje mi się, że dosyć łatwo.

1) Wybierasz taki rekord, w którym data wygaśnięcia jest większa od dzisiaj (teraz) (czyli NOW(), albo jakiej tam funkcji używasz do określenia daty) i dajesz LIMIT 1 i ORDER BY DATA WYGASNIECIA ASC
2) Wybierasz najpóźniejszą datę, czyli ORDER BY DATA WYGASNIECIA DESC i LIMIT 1
swiru_
spoko dzieki bardzo juz sobie poradzilem nospor podal najlepsze rozwiazanie:

  1. function ad_min()
  2. {
  3. $query = ('SELECT MIN(`data_zakonczenia`) FROM `ad` GROUP BY `data_zakonczenia`');
  4. $result = mysql_query($query);
  5. $row = mysql_fetch_array($result);
  6. return $row['0'];
  7. }


to jest do wyswietlania najblizszej daty, do najdalszej jak ktos bedzie chcial to juz bedzie wiedzial jak sobie poradzic smile.gif

dzieki bardzo i pozdro

hm.. jednak problem jest ...

  1. function ad_max()
  2. {
  3. $query2 = ('SELECT MAX(`data_zakonczenia`) FROM `ad` GROUP BY `data_zakonczenia`');
  4. $result2 = mysql_query($query2);
  5. $row2 = mysql_fetch_array($result2);
  6. return $row2['0'];
  7. }


pokazuje najblizsza date... ktos ma pomysl dla czego??
yevaud
sugerujesz ze MIN i MAX daja ta sama wartosc ?
swiru_
nie sugeruje tylko tak jest ;]

  1.  
  2. function ad_min()
  3. {
  4. $query = ('SELECT MIN(`data_zakonczenia`) FROM `ad` GROUP BY `data_zakonczenia`');
  5. $result = mysql_query($query);
  6. $row = mysql_fetch_array($result);
  7. return $row['0'];
  8. }
  9.  
  10. function ad_max()
  11. {
  12. $query2 = ('SELECT MAX(`data_zakonczenia`) FROM `ad` GROUP BY `data_zakonczenia`');
  13. $result2 = mysql_query($query2);
  14. $row2 = mysql_fetch_array($result2);
  15. return $row2['0'];
  16. }
  17.  


oby swie funcjie wyswietlaja ta sama date w bazie mam trzy wpisy w kazdym inna data_zaknczenia: 2010-08-18, 2010-08-19 o 2010-08-20

hmm to ciekawe.. dopiero jak dodalem odwrotne sortowanie to wyswietla mi dobrze... czyzby mial zla forme daty w rekordach i dla tego MAX nie dziala poprawnie??

  1. $query = ('SELECT MAX(data_zakonczenia) FROM ad GROUP BY data_zakonczenia DESC');


to zapytanie wyswietla najdalsza date
yevaud
tak zupelnie btw. nie potrzebujesz group by jesli masz tylko max/min(funkcje agregujaca) w select

a bardziej na temat: wydaje mi sie ze to co mowisz jest niemozliwe smile.gif
nospor
GROUP BY `data_zakonczenia`
no ale nie grupuje się po tym, z czego się wyciąga max i min smile.gif

Cytat
tak zupelnie btw. nie potrzebujesz group by jesli masz tylko max/min(funkcje agregujaca) w select
Swiete słowa smile.gif

@swiru_ wywal te group by
swiru_
ok po usuniecu GROUP BY dziala jak nalezy

panowie dzieki za pomoc...

temat do zamkniecia
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.