Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z porównywaniem wyrażeń
morris4life
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 31.05.2008

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


jak napisać wyrażenie SQL które wyszuka wartość najbardziej odpowiadającą wzrocowi.
dokładnie chodzi o porównywanie dat.

przykład:
w tabeli są wiersze z datami 2008-05-01, 2008-05-04. Wzorzec to 2008-05-02. Zapytanie ma zwrócić datę najbliższą, czyli 2008-05-01

z góry dziękuję za pomoc....wszelkie podpowiedzi, linki, lub rozwiązania mile widziane (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Sprawa PILNA na wczoraj (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
cojack
post
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

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


  1. SELECT DATA FROM nazwa_tabeli WHERE DATA BETWEEN '2008-04-30' AND '2008-05-03' ORDER BY DATA DESC LIMIT 1 ;


lub

  1. SELECT DATA FROM nazwa_tablicy WHERE DATA < '2008-05-03' ORDER BY DATA DESC LIMIT 1 ;


musi któreś działać...

  1. SELECT DATA FROM nazwa_tablicy WHERE DATA = (SELECT (max(DATA)-1) FROM nazwa_tablicy);


ta ostatnia to jest z poprawką z @irc.pl #php.pl

Ten post edytował cojack 31.05.2008, 18:39:14
Go to the top of the page
+Quote Post
morris4life
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 31.05.2008

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


Cytat(cojack @ 31.05.2008, 19:08:27 ) *
  1. SELECT * FROM nazwa_tabeli WHERE DATA BETWEEN '2008-04-30' AND '2008-05-03' ORDER BY date DESC LIMIT 1 ;



ok spróbuję , ale co oznacza ta komenda desc? (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ;o

ad poprzedniej odpowiedzi....pewnie działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale nadal nie wskazuje tej bliższej daty do wzorca...a wzorzec będzie dynamicznie zmieniany.
polecenie musi chyba wyliczać czy mniej dni jest od wzorca do późniejszej daty czy do wcześniejszej daty

Cytat(cojack @ 31.05.2008, 19:08:27 ) *
  1. SELECT * FROM nazwa_tabeli WHERE DATA BETWEEN '2008-04-30' AND '2008-05-03' ORDER BY date DESC LIMIT 1 ;

....
nawet tutaj polecenie nie wie czy wzorzec, załóżmy 2008-05-01 jest bliższy 2008-04-30 czy 2008-05-03...ot cały szkopół (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

i jeszcze jeden problem dlaczego mają w tabeli wiersze 2008-05-22 i 2008-05-31, wykonując składnię:
CODE
Select * FROM tabela WHERE data > 2008-05-21 LIMIT 1

zwraca ona datę nie 2008-05-22 tylko 2008-05-31? nie kumam tego, jakby nie widział tego wiersza

ok apropos tego nie widzenia dat 2008-05-22 to była wina tego że wyników nie posortowałem według kolumny "data" :/ (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował morris4life 31.05.2008, 18:29:43
Go to the top of the page
+Quote Post

Posty w temacie


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: 3.10.2025 - 19:24