Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Następny i poprzedni wpis w bazie według daty
user123
post
Post #1





Grupa: Zarejestrowani
Postów: 231
Pomógł: 2
Dołączył: 2.08.2006
Skąd: Poznań

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


Witam,

w jaki sposób można na podstawie daty:
19:20:13 2010-08-06
odnaleźć poprzedni i następny wpis za pomocą zapytania postgresie.
Datę jak i godzinę trzymam w tabeli w polu tabelka_data(DATE), tabelka_czas (TIME).
(IMG:style_emoticons/default/smile.gif)

Ten post edytował user123 7.08.2010, 22:10:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Robią problem. Sam z początku myślałem, że walnąć union i zapytanie w stylu
  1. SELECT kolumny FROM tabela WHERE tabelka_data >= $data_dziś_z_php AND tabelka_czas >= $czas_teraz_z_php ORDER BY tabelka_data ASC, tabelka_czas ASC LIMIT 1
  2. UNION
  3. SELECT kolumny FROM tabela WHERE tabelka_data <= $data_dziś_z_php AND tabelka_czas <= $czas_teraz_z_php ORDER BY tabelka_data DESC, tabelka_czas DESC LIMIT 1
Ale to zapytanie zwróci fałszywe wyniki, ponieważ tabelka_czas obetnie nam prawidłowe wyniki jeśli rekordy kolejne będą z różnych dni, bo tabelka_czas nam wywali rekordy z następnego dnia sprzed godziny tabelka_czas, choć jakieś mogą być. Nie można także z WHERE wyrzucić sprawdzania po tabelka_czas bo wybierze wszystkie rekordy z tego dnia... Także wcześniejsze/późniejsze od niego. Rozbicie tego czasu na 2 kolumny było moim zdaniem nieprzemyślane trochę.

Inna sprawa... Czy autor nie ma przypadkiem kolumny id z autoincrement? Przecież ona może zrobić za "datę". Wiele osób myśli tylko o datach, nie zauważając, że autoincrement może tę samą funkcję pełnić. Każdy kolejny rekord jest bowiem z wyższym numerem a więc i młodszy jednocześnie. Wystarczy więc wybrać najbliższy rekord o większym i mniejszym id, który może być wyświetlony userowi (to niekoniecznie o 1 mniejszy/większy) by rozwiązać problem.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 24.12.2025 - 13:40